我是否将我的从属(中间)或根 CA 证书放在我的信任库中?

信息安全 tls openssl 爪哇
2021-09-03 11:03:35

我有一台服务器使用由我的下级(中间)CA 签名的证书。

我的基于 java 的客户端需要将中间 CA 证书或根 CA 证书放入它的信任库中,因此当它与服务器通信时,它知道它可以信任该服务器证书。

我应该将中间或根 ca 证书放在信任库中吗?

我知道中间 CA 用于通过保护根来增强安全性,所以我的倾向是永远不要将根包含在任何东西中。但是,我很难理解这一切是如何运作的。

开导我 :)

1个回答

一般来说,您应该将根证书放入其中。该模型通常是这样工作的:

客户

将根证书“固定”(即嵌入到信任库中)。

无论他们验证证书,它都需要追溯到他们信任存储中的某个证书,最终证书和固定证书之间的中间证书数量应该是无关紧要的,因此没有理由不固定根证书 - 至少从客户的角度来看。

证书颁发机构

在 CA 密钥被泄露的情况下如何处理是运行 CA 的人的一个大问题。为了在出现问题时更容易清理,人们通常使用“离线根”:

  1. 让您的根 CA 签署一些从属 CA,然后拔下根 CA(如果 CA 是专用物理服务器),或者将根私钥隐藏在受良好保护的备份磁盘上,并确保没有任何副本漂浮在周围。这使得黑客很难窃取私钥。

  2. 将您的日常证书颁发、CRL 发布/OCSP 等从中间件中取出。它们连接到互联网,因此面临更高的妥协风险。

  3. 在中间 CA 被破坏的情况下,您可以启动您的根 CA,撤销该中间 CA,启动一个全新的中间 CA,然后重新颁发所有偶然被撤销的合法证书。

  4. 使用由该中间人签名的证书的服务器将不得不安装新颁发的证书,因为它们的旧证书现在已被吊销。

  5. 客户将完全不受影响,因为他们已经固定了根证书,因此交换中间证书绝对没有效果。

作为一个实验,将上面的内容与您的根 CA 密钥被泄露时您必须做的事情进行比较。由于根嵌入公共浏览器、vpn 客户端、其他服务器等可能需要几个月到几年的时间,这可能意味着 CA 将停业。

固定根与固定中间的优点:

  • 上面的示例说明了固定根目录可以更容易地从妥协中清除,因为您可以简单地撤销受感染的中间体,重新颁发一些证书并继续您的生活。
  • 您的信任库中的证书较少。如果每个人都必须固定每个中间人,那么每个人的信任库都会大得多,以至于可能会影响证书验证的性能,因为搜索信任库需要更长的时间。
  • 负载平衡:通过固定根,您可以自由地重新安排中间体的拓扑结构,或者甚至将它们放在负载平衡器后面来处理证书请求,而客户端不会关心。