【问题标题】:SSL handshake with intermediate certificate带有中间证书的 SSL 握手
【发布时间】:2014-03-03 16:38:43
【问题描述】:

在 SSL 握手期间,浏览器会根据需要使用提供的 URL 从主机 Web 服务器下载任何中间证书。我相信浏览器附带了来自公共 CA 的预安装证书,只有根证书的公钥。

1) 当使用独立的 java 程序调用 https url [https://xyz.com ..使用 Verisign 证书] 时,我不需要将该证书添加到任何信任库,因为它的根公共已经在 jdk 的 cacerts 信任库中可用文件。这是正确的说法吗?

2) 当我从应用程序服务器运行相同的程序时,它需要将所有中间证书单独添加到服务器信任库。为什么它以不同的方式工作。

【问题讨论】:

    标签: ssl


    【解决方案1】:

    如果服务器证书的信任链是:root-intermediate#1-intermediate#2-server 并且客户端(浏览器)在其 CA 存储中将 root 作为可信 CA,它需要一种方法来验证服务器证书检查到根的完整链。而且由于客户端通常不知道服务器需要提供它们的中间 CA。

    有时它似乎在不提供这些中间 CA 的情况下工作。首先,浏览器通常会缓存它们获得的中间 CA,因此如果 middle#2 与另一台服务器已经看到的相同,则验证将成功,但仅适用于之前访问过另一台服务器的客户端:(

    另一种方法是在证书中提供一个 URL,可以在其中下载颁发者证书,例如服务器可以提供到中间#2 证书的链接,中间#2 可以提供到中间#1 的链接。在这种情况下,客户端可以下载丢失的证书。但是,此功能并未被普遍采用,例如一些浏览器可能会提供它,但浏览器之外的 SSL 库通常不提供。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 2016-01-18
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      相关资源
      最近更新 更多