【发布时间】:2016-10-15 01:34:20
【问题描述】:
我在 Indy 10.5.8.0 中使用 Delphi XE2
目前我需要更改与我们其中一台服务器的连接以仅使用 TLS 1.2,目前我们正在使用 TLS 1.0
作为 IdHTTP 的处理程序,正在使用 IdSSLIOHandlerSocketOpenSSL。
我尝试将 Method 更改为 sslvTLSv1_2,但它不起作用,因为连接给出了下一个错误: “与 SSL 连接时出错。错误:1409442E:SSL 例程:SSL3_READ_BYTES:tlsv 1 警报协议版本”
我正在使用默认密码列表,不确定我是否需要任何特定的密码(目前要求服务器提供商知道他们使用什么密码)
这是Handler的配置:
我不习惯 SSL 连接,因为之前它使用默认设置,一切正常。
我尝试检查 WireShark,在这两种情况下(当方法是 sslvTLSv1_2 或 sslvTLSv1 时)我都收到指向 tls 1.0 版的相同错误。
方法 sslvTLSv1:
方法 sslvTLSv1_2:
如果我遗漏了什么,请指出正确的方向。
提前感谢您提供的所有帮助。
P.S : 刚刚收到服务器提供商的回复,他们使用 AES_128_GCM 作为他们的密码,它在默认密码列表中吗?
WireShark>客户端Hello包:
【问题讨论】:
-
您的屏幕截图显示了致命的 TLS 警报,但 ClientHello 数据包是什么样的?服务器拒绝 ClientHello 请求的 TLS 版本。至于密码,默认密码列表在
IdSSLOpenSSLHeaders单元中的SSL_DEFAULT_CIPHER_LIST常量中定义。 -
无论如何,10.5.8 是 Indy 的过时版本。当前版本为 10.6.2(撰写本文时为 5361 版)。您应该认真考虑升级,特别是如果您计划使用最新版本的 OpenSSL,由于最近的 OpenSSL API 重大更改会导致 10.5.8 无法加载 OpenSSL DLL,因此 10.5.8 无法再使用该版本。此外,新版本的 Indy 无论如何都具有更好的 TLS 1.1 和 1.2 支持。
-
@RemyLebeau 感谢您的回复,我已经添加了客户端 hello 包,将考虑升级 indy 并查看是否有任何帮助,再次感谢您的提示。
标签: delphi ssl delphi-xe2 indy10 tls1.2