2014-09-19 216 views
0

在客户端身份验证步骤中,如果证书过多,浏览器如何知道在SSL握手的客户端身份验证步骤中向服务器发送哪个证书。我的意思是它如何识别哪个服务器是哪个证书SSL握手 - 客户端身份验证

回答

1

现在对于Cyber​​Monk的问题

如果你看到我的反应上面,你可以看到服务器是如何请求的客户端发送一个证书,其值得信赖的权威之一。客户可以根据此选择证书。

如果发生冲突,浏览器通常会向您显示证书列表,并要求您选择其中一个要使用的证书。我知道Safari和Chrome确实如此。

最有可能的是,一旦您选择了证书,浏览器将继续在会话的其余部分使用相同的证书。

现在,为了让tomcat的请求相同,如果这是一个自签名证书,您可以将公共证书放在tomcat的truststore中。它不是一个自签名证书,您必须将公共根CA证书放置在tomcat的信任存储中

浏览器可能包含多个公用证书,但它不会将证书发送到服务器,除非它具有私有签署它的钥匙。只有在创建证书的过程中,您(或您的浏览器)才会拥有私钥。一旦您拥有私钥并将私钥/公钥证书对导入浏览器,它将能够发送证书。

1

它没有。客户端证书不是特定于服务器的。

+0

哦,如果是这样,我把我的客户端证书放在浏览器中。如果两台不同的服务器需要两个不同的客户端证书,客户端将如何选择合适的客户端证书 例如:我的tomcat用户xml有一个标记 证书在客户端浏览器中以相同的值安装。现在客户浏览器如何知道握手时要选择哪个证书 – Cybermonk 2014-09-19 08:02:12

1

服务器可以选择性地向客户端发送所需证书代理的列表。然后客户可以选择由所需CA签署的证书。

+0

如果是自签名证书,该怎么办?以及我如何让我的服务器(tomcat)告诉我,我想让浏览器给我使用java keytool创建的证书?所以我可以在服务器的tomcat用户领域验证它(我希望这是我们验证它的地方!)对于整个事情来说是非常新颖的。 – Cybermonk 2014-09-19 08:52:50

+0

如果客户端证书是自签名的,则不存在您可以提供的信任锚点,因此它可能不起作用。但是,如果你在'trustStoreFile'中有预期的客户端证书,它可能会起作用。除此之外,我猜Tomcat只是将'truststoreFile'中的所有CA的名称发送给客户端,但我对tomcat没有自己的经验。 – 2014-09-19 10:03:47