【发布时间】:2014-11-13 17:52:45
【问题描述】:
当有这么多证书时,浏览器如何知道在 ssl 握手的客户端身份验证步骤中将哪个证书发送到服务器。我的意思是它如何识别哪个证书适用于哪个服务器
【问题讨论】:
当有这么多证书时,浏览器如何知道在 ssl 握手的客户端身份验证步骤中将哪个证书发送到服务器。我的意思是它如何识别哪个证书适用于哪个服务器
【问题讨论】:
现在是 CyberMonk 的问题
如果您在上面看到我的回复,您可以看到服务器如何请求客户端发送具有其受信任机构之一的证书。客户端可以根据此选择证书。
如果存在冲突,浏览器通常会向您显示证书列表并要求您选择其中一个来使用。我知道 Safari 和 Chrome 肯定会这样做。
很可能,一旦您选择了一个证书,浏览器就会在会话的其余部分继续使用该证书。
现在,为了使您的 tomcat 请求相同,如果这是一个自签名证书,您可以将公共证书放在 tomcat 的信任库中。如果这不是自签名证书,您必须将公共根 CA 证书放在 tomcat 的信任库中
浏览器可能包含多个公共证书,但它不会将证书发送到服务器,除非它拥有用于签名的私钥。只有当您完成证书创建过程时,您(或您的浏览器)才会拥有私钥。一旦你有了私钥并将私钥/公钥证书对导入浏览器,它就可以发送证书了。
【讨论】:
服务器可以选择将所需证书机构的列表发送给客户端。然后客户端可以选择由所需 CA 签名的证书。
【讨论】:
trustStoreFile 中有预期的客户端证书,它可能会起作用。除此之外,我猜tomcat只是将它在truststoreFile中的所有CA的名称发送给客户端,但我对tomcat没有自己的经验。
它没有。客户端证书并非特定于服务器。
【讨论】: