【问题标题】:Why root CA can be verified only by OS ( and not by applications )为什么根 CA 只能由操作系统(而不是应用程序)验证
【发布时间】:2016-08-03 04:07:14
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ssl-certificate root-certificate


    【解决方案1】:

    “根 CA”是我们信任的组织。该组织曾经生成过一个证书(一对公钥和私钥)。公钥与任何其他现有公钥没有什么不同,只是它预先安装在操作系统中,我们都同意它是好的和值得信赖的。

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

    无法以与根 CA 证书相同的方式完成此链验证。因为它是根,所以没有其他受信任的证书对其进行签名(这就是它是根的原因)。但是任何人都可以验证它,例如检查它是否已经安装到我们操作系统的Trusted Root Certificate Store 中。

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

    话虽如此,操作系统或任何应用都可以验证任何类型的证书。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-04-24
        • 2012-02-06
        • 2018-04-26
        • 1970-01-01
        • 2021-10-06
        • 2012-05-04
        • 2020-07-04
        • 2021-06-02
        • 2015-06-17
        相关资源
        最近更新 更多