我有些困惑双向SSL是如何工作的。客户端如何创建其证书以发送到服务器?它是由服务器生成并分发给客户端吗?
此外,双向SSL相比单向SSL有什么优势?
在连接建立之前,两个证书都应该已经存在。它们通常由证书颁发机构(不一定是相同的)创建。(虽然有替代方案可以使用其他验证方式,但一些验证仍然需要进行。)
服务器证书应该由客户端信任的CA创建(并遵循RFC 6125定义的命名约定)。
客户端证书应该由服务器信任的CA创建。
每个参与方可以选择自己信任的内容。
有在线CA工具可让您在浏览器中申请证书,并在CA签发后将其安装在浏览器中。它们不需要在请求客户端证书身份验证的服务器上。
证书分发和信任管理是公钥基础设施(PKI)的职责,通过CA实现。 SSL/TLS客户端和服务器只是该PKI的用户。
当客户端连接到要求客户端证书身份验证的服务器时,该服务器会发送一个CA列表,作为客户端证书请求的一部分。然后,如果客户端希望并且合适的证书可用,则可以发送其客户端证书。
客户端证书身份验证的主要优点是:
您可能会对 Advantages of client certificates for client authentication? (on Security.SE)感兴趣。