【问题标题】:Using Indy 10 IdHTTP with TLS 1.2将 Indy 10 IdHTTP 与 TLS 1.2 一起使用
【发布时间】: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


【解决方案1】:

以防万一有人遇到类似的错误,在我的情况下,它是正在使用的 SSL 库(libeay32,ssleay32),它已过时(2010 年)。更新 SSL 后,它运行正常,没有任何错误。

感谢@RemyLebeau 指出这是一个更新问题 =)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    相关资源
    最近更新 更多