证书链 - 中间证书和根证书 - 需要安装吗?

信息安全 tls 证书 网页浏览器 证书颁发机构 电子签名
2021-08-31 14:10:38

最近我从 comodo 为我的域购买了 SSL 证书 -orakoha.com

在提交 CSR 等、域控制验证等后,我会收到一个包含 4 个文件的 zip 文件,我认为这些文件是我颁发的证书、中间 ca 证书和根证书。

  1. www_orakoha_com.crt
  2. COMODORSADomainValidationSecureServerCA.crt
  3. COMODORSAAddTrustCA.crt
  4. AddTrustExternalCARoot.crt (根证书)

我的问题如下

  • 当浏览器访问我的网站(例如www.orakoha.com),下载我的证书并看到它没有发布 ca(中间 ca 的公钥)时,它会自动COMODORSAAddTrustCA.crt从我的网络服务器下载那些中间证书(例如)吗?或者它会提示最终用户(使用浏览器)他/她是否要安装这些证书?
  • 如果浏览器没有颁发中间证书/我的证书的根 ca 的根证书,会发生什么?我的网络服务器会发送根证书,浏览器会提示是否安装根证书?
  • 如何查看浏览器中已安装的根证书是什么?
2个回答

简而言之:中间证书必须在 TLS 握手中发送(需要正确配置服务器),并且只有客户端本地的 CA 才会被视为信任锚。

详细:

...看到它没有发布 ca(中间 ca 的公钥),它会自动从我的网络服务器下载那些中间证书(例如 COMODORSAAddTrustCA.crt)吗?

没有浏览器会从您的站点下载证书。如果 TLS 握手中缺少中间证书,某些浏览器可能会尝试从其他站点下载证书,但您不应依赖它。桌面上的谷歌浏览器似乎可以做到这一点,其他浏览器没有。

或者它会提示最终用户(使用浏览器)他/她是否要安装这些证书?

不,不会有提示。只是证书无法验证的错误。

...我的网络服务器会发送根证书,浏览器会提示是否安装根证书?

不,如果浏览器信任服务器发送的任何随机根证书,那将是愚蠢的,因为中间人攻击会很简单。即使是提示也无济于事,因为大多数用户只会点击他们不理解的任何对话框。浏览器将只信任浏览器附带的 CA 或由操作系统提供并显式安装的 CA。安装新的根目录更复杂,通常需要用户明确下载、安装和信任 CA 证书。

如何查看浏览器中已安装的根证书是什么?

互联网上有很多关于此的信息。只需点击搜索“查看根证书浏览器”中的链接即可。请注意,实际方式取决于浏览器和操作系统。

首先,您应该阅读本网站上最著名的问题:SSL/TLS 是如何工作的?,对 TLS 有一个很好的理解会解决你的很多问题。


回答您的问题:

a) 当浏览器访问我的站点时...会提示最终用户(使用浏览器)他/她是否要安装这些证书?

不,在浏览器中访问网站永远不会导致用户安装证书。当您将证书安装到操作系统的信任库中时,您会说“我知道此证书的来源,并且我完全信任它”。我怎么可能相信我刚刚访问过的某个随机站点提供给我的证书?我怎么知道我下载的证书实际上属于该站点,而不是中间人攻击者?

b) 如果浏览器没有颁发中间证书/我的证书的根 ca 的根证书,会发生什么?

很简单,证书将无法验证,浏览器会发出愤怒的警告。

您的证书信任库会填入经过 Google/Chrome、Mozilla/Firefox、Apple、Microsoft 等安全专家团队适当审查的根证书(这些被称为“固定证书”)。如果证书不是由受信任的根颁发的,那么它是……不受信任的。安装随机根证书以绕过受信任的根基本上与禁用病毒扫描相同,因为它告诉您您尝试打开的文件包含病毒。这些安全机制的存在是有原因的——听听他们的意见!

c) 我如何查看浏览器中已安装的根证书是什么?

在 Chrome 中,它位于此处的设置中:(在其他浏览器中位于类似位置)

Chrome的证书列表