TLS相互认证

时间:2012-07-16 08:13:31

标签: ssl ssl-certificate

以下信息显示了我的ssl连接到我的ldap服务器的wire shark日志。在此客户端证书中,长度为零。请让我知道这是什么意思。是因为缺乏客户端身份验证吗?对于相互身份验证,是否必须包含客户端证书?

329 SSLv2   Client Hello
332 TLSv1   Server Hello, Certificate, Certificate Request, Server Hello Done
334 TLSv1   Certificate, Client Key Exchange
336 TLSv1   Change Cipher Spec, Encrypted Handshake Message
337 TLSv1   Change Cipher Spec, Encrypted Handshake Message

在第332帧显示完整的证书信息,334显示证书长度:0。 在第334帧中,客户端密钥Exchange包含足够的信息来传递premaster-secret。

1 个答案:

答案 0 :(得分:6)

Certificate Request消息表示服务器请求了客户端证书(强制与否)。

客户端响应发送的空Certificate消息表示客户端未找到合适的客户端证书(或选择不使用它)。

服务器是否要继续使用此连接取决于其配置。客户端证书身份验证可以是可选的。

TLS specification

中描述了此行为
  

仅在服务器上发送此消息         申请证书。如果没有合适的证书,         客户端必须发送包含否的证书消息         证书。也就是说,certificate_list结构有一个         零长度。如果客户端没有发送任何证书,那么         服务器可以自行决定是否继续握手         客户端身份验证,或使用致命的handshake_failure进行响应         警报。

(这是来自TLS 1.2规范,在TLS 1.1及以下版本中,它只是 [...]应该发送证书消息[...] 。)