【问题标题】:Proper response by SSL / TLS client for Certificate Request message with no DNs?SSL / TLS 客户端对没有 DN 的证书请求消息的正确响应?
【发布时间】:2013-02-19 04:09:09
【问题描述】:

当 SSL/TLS 客户端收到具有空 DN 列表的证书请求消息时,它的正确行为是什么?

这里有两种看似自然的可能性: 1)发回一个空的证书消息 2) 从所有可能的证书中选择(或提示用户选择)一个证书

是否有一个正确的行为,或者任何一个选项都可以?我的目标是在我的代码(.Net、WCF)中向服务器提供一个证书,我试图确定是否需要在客户端进行更改以覆盖不发送证书的看似默认行为,或者如果我需要在服务器端进行更改才能真正发送 DN 列表。

浏览器似乎会选择选项 2,但我使用 WCF 和 .Net 的代码使用的是选项 1。我能够从商店中选择证书,但它没有在 TLS 握手中发送。

TLS 1.0 和 1.2 规范(RFC 2246 和 5246)似乎没有针对这种情况提供任何指导。

【问题讨论】:

    标签: ssl certificate


    【解决方案1】:

    这其实是TLS 1.0规范和TLS1.1/1.2不同的地方。

    特别是在Section 7.4.4 (Certificate Request) in TLS 1.1中添加了以下内容:

    如果 certificate_authorities 列表是空的,那么客户端可以发送 适当的 ClientCertificateType 的任何证书,除非有 是一些相反的外部安排。

    根据我的经验(至少对于浏览器和 Java/JSSE),这在实践中也适用于 SSLv3 和 TLS 1.0,即使没有提及空列表。

    实现仍然可以自行决定选择做什么(“[...] 可以发送任何 [...]”)。

    在任何情况下,即使使用非空 CA 列表,当多个客户端证书与 CA 条件匹配时,也需要自动或通过 UI 进行选择。这也是依赖于实现的,并且可以根据框架进行定制。

    【讨论】:

      猜你喜欢
      • 2019-10-25
      • 1970-01-01
      • 2013-07-08
      • 2018-04-20
      • 2012-05-02
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多