当前位置: 首页 > 知识库问答 >
问题:

双向SSL澄清

阮桐
2023-03-14

对于双向SSL是如何工作的,我有些困惑。客户端如何创建要发送到服务器的证书?是否从服务器生成并分发到客户端?

另外,与单向SSL相比,双向SSL的优势是什么?

共有1个答案

应向晨
2023-03-14

这两个证书在连接之前都应该存在。它们通常由证书颁发机构创建(不一定相同)。(在其他情况下,可以以不同的方式进行验证,但需要进行一些验证。)

服务器证书应该由客户端信任的CA创建(并遵循RFC6125中定义的命名约定)。

客户端证书应由服务器信任的CA创建。

这取决于每一方选择它所信任的东西。

在线CA工具允许您在浏览器中申请证书,并在CA颁发证书后将其安装在浏览器中。它们不需要位于请求客户端证书身份验证的服务器上。

证书分发和信任管理是通过CAS实现的公钥基础设施(PKI)的角色。SSL/TLS客户端和服务器,然后仅仅是该PKI的用户。

当客户端连接到请求客户端证书身份验证的服务器时,服务器发送一个它愿意接受的CAs列表,作为客户端证书请求的一部分。然后,客户端可以发送其客户端证书,如果它愿意的话,并且有一个合适的证书可用。

客户端证书身份验证的主要优点是:

  • 私有信息(私钥)从不发送到服务器。在身份验证过程中,客户端根本不会泄露其秘密。
  • 不知道具有该证书的用户的服务器仍然可以对该用户进行身份验证,前提是它信任颁发该证书的CA(并且该证书是有效的)。这与护照的使用方式非常相似:您可能从未见过向您出示护照的人,但由于您信任签发当局,您可以将身份与此人联系起来。

您可能对用于客户端身份验证的客户端证书的优点感兴趣?(关于security.se)。

 类似资料:
  • 如果我正确理解SSL/TLS在仅服务器身份验证中的含义,那么在握手之后,服务器会向客户端发送它的公钥和一个由CA签名的数字签名证书。如果客户端拥有这个CA的公钥,它就可以解密证书并与服务器建立信任。如果它不信任CA,则通信停止。在双向SSL中,客户端需要向服务器进行身份验证,在客户端接收到公钥和数字签名的证书之后,客户端将向服务器发送它的公钥和数字签名的证书。服务器将检查它是否有客户机证书的公钥,

  • 我试图设置2方式ssl身份验证。我的要求是经纪人应该只认证特定的客户。 我的组织有一个CA,它发行pkcs12格式的所有证书。我遵循的步骤如下。 获取代理的证书,并在代理密钥库中配置它 当我运行代理和客户端时,我希望代理验证客户端并建立ssl连接。但是下面的错误被抛出。 当我用只包含CA证书的信任存储文件替换 /etc/pki/java/cacerts代理信任存储时,它工作得很好。但是它将验证任何

  • 我试图使用nginx作为双向SSL/相互SSL的web逻辑的反向代理。 客户端<=双向SSL=>NGINX<=双向SSL=>WebLogic服务器 客户端到NGINX双向SSL工作良好,但在上游连接到web逻辑上出现以下错误。 nginx调试日志: 以下是我对上游的nginx配置: 我尝试了各种选项,包括注释下面的配置。 如果我尝试使用openssl c_client命令行,我能够连接并获得HTT

  • 从文件导入证书时SSL握手失败的后续问题 在该链接中,使用第三方证书时SSL握手失败。 我对此表示怀疑。 一旦服务器向客户端颁发了包含公钥的证书,客户端是否使用服务器的公钥对每条消息进行编码?

  • 我正在创建一些restful Web服务,并使用Spring-Boot创建一个嵌入式tomcat容器。 其中一个要求是实现双向SSL。我一直在研究HttpSecurity对象,可以使用以下方法使其仅在SSL通道上运行webservices:- 我似乎找不到一种方法来使Web服务仅可供提供有效客户端证书的应用程序访问。 我只有SSL的基本知识,所以即使是正确方向的一般指针也将不胜感激。 正在部署的服

  • 我已经在Netty中尝试了双向SSL身份验证 但这个例子不再显示任何信息,只是一个404未找到。我在这里找到了一些帮助: https://github.com/code4craft/netty-learning/blob/master/netty-3.7/src/main/java/org/jboss/netty/example/securechat/SecureChatSslContextFac