TLS / SSL对客户端证书的准确程度如何?

时间:2014-11-11 16:06:35

标签: security ssl

我阅读了TLS 1.2 RFC,但我无法找到(或了解)客户端证书身份验证的工作原理。

我理解的是服务器可以请求客户端证书,客户端应该提供它,但它究竟提供了什么?客户如何证明他拥有私钥(我假设他遇到了一些挑战并对其加密,但他究竟加密了什么?)

如果有人能够对协议的这一部分有所了解,我将很高兴。

编辑: 我想要实现的是中间人(就像小提琴手那样服务器证书)。

1 个答案:

答案 0 :(得分:2)

我可以从openssl wiki复制/粘贴: https://wiki.openssl.org/index.php/SSL_and_TLS_Protocols#Client_Authentication

客户端基本上将客户端证书发送到与服务器给出的CA DN匹配的服务器。客户端然后发送Cerificate Verify,使用其私钥来证明他拥有它。

客户端证书身份验证要求客户端拥有证书并拥有相应的私钥。客户端从不发送其私钥,但使用它来证明他具有在证书中公布的相应公钥密钥对。

他消化了什么?到目前为止,整个握手交流的摘要。 如果服务器设法用公钥验证这一点,并且它匹配到目前为止整个握手的摘要(在服务器端计算),那么我证明了两件事:

  • 客户拥有私钥(否则使用公钥解密将不正确)
  • 客户端位于此握手的另一端,它可以防止从另一次握手中重放客户端证书验证。

所以肯定挑战实际上是整个握手消息。