我有一台服务器使用由我的下级(中间)CA 签名的证书。
我的基于 java 的客户端需要将中间 CA 证书或根 CA 证书放入它的信任库中,因此当它与服务器通信时,它知道它可以信任该服务器证书。
我应该将中间或根 ca 证书放在信任库中吗?
我知道中间 CA 用于通过保护根来增强安全性,所以我的倾向是永远不要将根包含在任何东西中。但是,我很难理解这一切是如何运作的。
开导我 :)
我有一台服务器使用由我的下级(中间)CA 签名的证书。
我的基于 java 的客户端需要将中间 CA 证书或根 CA 证书放入它的信任库中,因此当它与服务器通信时,它知道它可以信任该服务器证书。
我应该将中间或根 ca 证书放在信任库中吗?
我知道中间 CA 用于通过保护根来增强安全性,所以我的倾向是永远不要将根包含在任何东西中。但是,我很难理解这一切是如何运作的。
开导我 :)
一般来说,您应该将根证书放入其中。该模型通常是这样工作的:
将根证书“固定”(即嵌入到信任库中)。
无论他们验证证书,它都需要追溯到他们信任存储中的某个证书,最终证书和固定证书之间的中间证书数量应该是无关紧要的,因此没有理由不固定根证书 - 至少从客户的角度来看。
在 CA 密钥被泄露的情况下如何处理是运行 CA 的人的一个大问题。为了在出现问题时更容易清理,人们通常使用“离线根”:
让您的根 CA 签署一些从属 CA,然后拔下根 CA(如果 CA 是专用物理服务器),或者将根私钥隐藏在受良好保护的备份磁盘上,并确保没有任何副本漂浮在周围。这使得黑客很难窃取私钥。
将您的日常证书颁发、CRL 发布/OCSP 等从中间件中取出。它们连接到互联网,因此面临更高的妥协风险。
在中间 CA 被破坏的情况下,您可以启动您的根 CA,撤销该中间 CA,启动一个全新的中间 CA,然后重新颁发所有偶然被撤销的合法证书。
使用由该中间人签名的证书的服务器将不得不安装新颁发的证书,因为它们的旧证书现在已被吊销。
客户将完全不受影响,因为他们已经固定了根证书,因此交换中间证书绝对没有效果。
作为一个实验,将上面的内容与您的根 CA 密钥被泄露时您必须做的事情进行比较。由于根嵌入公共浏览器、vpn 客户端、其他服务器等可能需要几个月到几年的时间,这可能意味着 CA 将停业。