双向SSL澄清

时间:2012-05-23 18:13:43

标签: ssl two-way

我对双向SSL的工作方式感到有些困惑。客户端如何创建其证书以发送到服务器?它是从服务器生成并分发给客户端的吗?

此外,双向SSL相对于单向SSL的优势是什么?

3 个答案:

答案 0 :(得分:96)

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

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

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

由每一方选择它所信任的东西。

有一些在线CA工具可以让您在浏览器中申请证书,并在CA发布后将其安装在那里。它们不必位于请求客户端证书身份验证的服务器上。

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

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

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

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

您可能对Advantages of client certificates for client authentication? (on Security.SE)感兴趣。

答案 1 :(得分:36)

您所谓的“双向SSL”通常称为带有客户端证书身份验证的TLS / SSL。

在与example.com的“正常”TLS连接中,只有客户端验证它确实与example.com的服务器通信。服务器不知道客户端是谁。如果服务器想要验证客户端通常是使用密码,那么客户端需要向服务器发送用户名和密码,但这在TLS连接内部发生,作为内部协议(例如HTTP)的一部分,它不是TLS协议本身的一部分。缺点是您需要为每个站点单独设置密码,因为您将密码发送到服务器。因此,如果您使用相同的密码,例如PayPal和MyPonyForum,那么每次登录MyPonyForum时,您都会将此密码发送到MyPonyForum服务器,以便此服务器的运营商可以拦截它并在PayPal上尝试,并可以您的名义发放付款

客户端证书身份验证提供了另一种在TLS连接中对客户端进行身份验证的方法。与密码登录相反,客户端证书身份验证被指定为TLS协议的一部分。它的工作方式类似于客户端对服务器进行身份验证的方式:客户端生成公钥私钥对,并将公钥提交给可信CA进行签名。 CA返回可用于验证客户端的客户端证书。客户端现在可以使用相同的证书对不同的服务器进行身份验证(即,您可以使用相同的证书进行PayPal和MyPonyForum,而不会冒被滥用的风险)。它的工作方式是在服务器发送证书后,它要求客户端提供证书。然后发生了一些公钥魔术(如果你想知道读取RFC 5246的详细信息),现在客户端知道它与正确的服务器进行通信,服务器知道它与正确的客户端进行通信,并且两者都有一些共同的密钥材料。加密并验证连接。

答案 2 :(得分:5)

以两种方式ssl客户端要求服务器数字证书和服务器从客户端请求相同。虽然它有点慢,但它更安全,因为它是两种方式。通常我们不遵循它,因为服务器不关心客户端的身份,但客户端需要确保它连接的服务器的完整性。