当 SSL/TLS 客户端收到具有空 DN 列表的证书请求消息时,它的正确行为是什么?
这里有两种看起来很自然的可能性: 1) 发回空证书消息 2) 从所有可能的证书中选择(或提示用户选择)一个证书
是否有一个正确的行为,或者任一选项都可以?我的目标是在我的代码(.Net、WCF)中向服务器提供证书,并且我正在尝试确定是否需要在客户端进行更改以覆盖不发送证书的看似默认的行为,或者如果我需要在服务器端进行更改才能实际发送 DN 列表。
浏览器似乎会选择选项 2,但我使用 WCF 和 .Net 的代码正在使用选项 1。我可以从存储中选择证书,但它不会在 TLS 握手中发送。
TLS 1.0 和 1.2 规范(RFC 2246 和 5246)似乎没有针对这种情况提供任何指导。
这实际上是TLS 1.0规范和 TLS 1.1 / 1.2不同的地方。
特别是,在 TLS 1.1 的第 7.4.4 节(证书请求)中添加了以下内容:
如果certificate_authorities 列表为空,则客户端可以发送任何适当ClientCertificateType 的证书,除非有一些相反的外部安排。
根据我的经验(至少对于浏览器和 Java/JSSE),这也适用于 SSLv3 和 TLS 1.0,即使没有提到空列表。
选择做什么仍然由实现自行决定(“ [...] 可以发送任何 [...] ”)。
在任何情况下,即使使用非空 CA 列表,当多个客户端证书与 CA 条件匹配时,也需要自动或通过 UI 做出选择。这也取决于实现,并且可以根据框架进行定制。
| 归档时间: |
|
| 查看次数: |
3124 次 |
| 最近记录: |