为什么根 CA 只能由 OS 验证(而不是由应用程序验证)

Why root CA can be verified only by OS ( and not by applications )

我在某处得到提示,应用程序无法验证根 CA(只有 OS 可以)。我想得到以下几点的答案:

a) 是否只有OS才能验证根CA?

b)(如果是)为什么应用程序(特别是网络浏览器)不能验证根 CA?

c)(如果是)那么浏览器如何验证SSL证书?

不,应用程序无法验证根 CA 是不正确的。

例如,浏览器一直这样做。

作为另一个例子,核心 Java 有一整套包(JSEE 框架和支持 类),除此之外,您还可以编写一个可以验证证书的应用程序(包括根证书)。

A 'root CA' 是我们信任的组织。该组织曾经生成过证书(一对 public 和私钥)。 public 密钥与任何其他现有的 public 密钥没有什么不同,除了它是预先安装在 OS 中的,我们都同意它是好的和值得信赖的。

当我们浏览常规 HTTPS 站点时,我们会获得一个带有 public 密钥的证书(例如 https://www.google.com 的证书)。最初我们不信任该证书,但 OS 或应用程序可以验证该证书是否包含由我们已知的根 CA 签名的证明......或者它包含由另一个签名的证明可信证书(递归类型)

不能以相同的方式对根 CA 证书进行此链验证。由于它是根,因此没有其他受信任的证书对其进行签名(这就是它是根的原因)。但是任何人都可以验证它,例如检查它是否已经安装到我们 OS.

Trusted Root Certificate Store

所以,这就是根证书和普通证书的区别。

也就是说,OS 或任何应用程序都可以验证任何类型的证书。