【发布时间】:2015-04-06 22:13:51
【问题描述】:
我们有一个相对较旧的硬件运行一个客户端应用程序,它需要通过 TLS 1.0 进行 Web 服务调用。
服务器有许多不同的客户端,因此它支持 TLS 1.0、1.1 和 1.2。因此,当服务器发送它的证书时,它也会与一个 CA 列表一起出现。设置服务器以便客户端可以选择提供证书,但这不是必需的。问题是,一旦客户端看到 CA 列表,它就会发回 FIN/ACK(关闭连接)。
这似乎是不正确的行为。根据 TLS 1.0 RFC https://www.rfc-editor.org/rfc/rfc2246#section-7.4.2
请注意,客户可能 如果没有适当的证书,则不发送证书 发送以响应服务器的身份验证请求。
据推测,客户正在查看 CA 的列表,并假设它需要出示证书,但由于没有证书而彻底失败。客户端在没有提供 CA 列表时工作,我们可以通过禁用服务器上的 TLS 1.1 和 1.2 来强制。不幸的是,这在我们的生产环境中不是一个选项。
我的问题是上述结论是否正确;客户端是否应该在没有证书的情况下进行响应而不是关闭连接?
如果是这样,我看到了几个选项:
- 创建客户端证书并安装在每个客户端设备上
- 在服务器上打开一个单独的端口,只允许 TLS 1.0 专门用于此客户端。
- 向供应商提供客户端设备的支持票,希望他们能够修复它或有解决方案(怀疑)
我们倾向于选项 2,因为它是我们实施的最简单的解决方案。如果有人有任何其他方法可以让我们解决问题,将不胜感激。
【问题讨论】:
标签: ssl certificate handshake