【问题标题】:SSL HandShake - Client AuthenticationSSL 握手 - 客户端身份验证
【发布时间】:2014-11-13 17:52:45
【问题描述】:

当有这么多证书时,浏览器如何知道在 ssl 握手的客户端身份验证步骤中将哪个证书发送到服务器。我的意思是它如何识别哪个证书适用于哪个服务器

【问题讨论】:

    标签: tomcat ssl


    【解决方案1】:

    现在是 Cyber​​Monk 的问题

    如果您在上面看到我的回复,您可以看到服务器如何请求客户端发送具有其受信任机构之一的证书。客户端可以根据此选择证书。

    如果存在冲突,浏览器通常会向您显示证书列表并要求您选择其中一个来使用。我知道 Safari 和 Chrome 肯定会这样做。

    很可能,一旦您选择了一个证书,浏览器就会在会话的其余部分继续使用该证书。

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

    浏览器可能包含多个公共证书,但它不会将证书发送到服务器,除非它拥有用于签名的私钥。只有当您完成证书创建过程时,您(或您的浏览器)才会拥有私钥。一旦你有了私钥并将私钥/公钥证书对导入浏览器,它就可以发送证书了。

    【讨论】:

      【解决方案2】:

      服务器可以选择将所需证书机构的列表发送给客户端。然后客户端可以选择由所需 CA 签名的证书。

      【讨论】:

      • 如果是自签名证书呢?以及如何让我的服务器(tomcat)告诉我希望浏览器给我我使用 java keytool 创建的证书?这样我就可以在服务器的 tomcat-user 领域验证它(我希望这是我们验证它的地方!)对整个事情来说都是全新的。
      • 如果客户端证书是自签名的,则没有您可以提供的信任锚,因此它可能无法正常工作。但是,如果您在trustStoreFile 中有预期的客户端证书,它可能会起作用。除此之外,我猜tomcat只是将它在truststoreFile中的所有CA的名称发送给客户端,但我对tomcat没有自己的经验。
      【解决方案3】:

      它没有。客户端证书并非特定于服务器。

      【讨论】:

      • 哦,如果是这样,我应该将我的客户端证书放在浏览器中的什么位置。如果两个不同的服务器需要两个不同的客户端证书,客户端将如何选择合适的证书。例如:我的 tomcat 用户 xml 有一个标签 在客户端浏览器中安装了具有相同值的证书。现在客户端浏览器如何知道握手发生时选择哪个证书
      猜你喜欢
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多