我使用TIdHTTP轻松获取请求。通常,它运作良好,但在某些站点上,即使尝试各种设置也无法建立连接。 我试图遵循here
的回答要真正连接到“任何”服务器,您必须检测到“错误”。 版本”错误,然后使用其他特定的Method / SSLVersions重试 组态。不幸的是,“错误版本”的答复没有 包括服务器的实际版本,因此您必须使用 反复试验。如果SSLv23失败,请尝试TLSv1_2。如果失败,请尝试 TLSv1_1。如果失败,请尝试TLSv1。如果失败,请尝试SSLv3。
但这没有帮助。
例外- “与SSL连接时出错。错误:14094410:SSL例程:SSL3_READ_BYTES:sslv3警报握手失败”
或无法理解的SSL例程:SSL3_GET_RECORD:版本号错误。 但是我无法完全解决SSL3_READ_BYTES:sslv3警报
重现问题的示例代码和网站示例:
map
那我应该如何配置TIdHTTP来连接这些网站?
我使用Delphi XE8和openssl 1.0.1e
答案 0 :(得分:1)
问题中的任何站点都不需要较低的TLS协议版本。它们都完全能够与TLS 1.2甚至有时甚至与TLS 1.3进行通信。但是,所有这些站点仅在客户端使用SNI TLS扩展在TLS握手中通告目标主机名的情况下才起作用。
因此,该问题更有可能实际上是缺少的SNI扩展名。这似乎是一个已知问题。有关更多信息和如何处理问题的信息,请参见TIdHTTP and TLS SNI doesnt work。