双向 SSL 澄清

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

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

119142 次浏览

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

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

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

由各方选择自己信任的东西。

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

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

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

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

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

你可能对 < em > 客户端证书对于客户端身份验证的优势? (在 Security.SE 上)感兴趣。

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

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

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

Ssl 通过两种方式向客户机请求服务器数字证书,而服务器向客户机请求同样的证书。尽管速度有点慢,但它在两个方面都更加安全。通常我们不会遵循它,因为服务器不关心客户端的身份,但是客户端需要确保它所连接的服务器的完整性。