82

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

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

4

3 回答 3

112

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

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

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

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

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

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

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

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

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

您可能对客户端证书对客户端身份验证的优势感兴趣?(在 Security.SE 上)

于 2012-05-23T18:42:06.860 回答
48

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

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

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

于 2014-04-21T17:58:32.847 回答
5

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

于 2016-10-13T10:00:31.193 回答