5

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

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

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

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

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

4

1 回答 1

5

这实际上是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 进行选择。这也是依赖于实现的,并且可以根据框架进行定制。

于 2013-03-05T12:32:01.213 回答