EIdOSSLConnectError 与 SSL 连接时出错 - 观察到 EOF

EIdOSSLConnectError Error connecting with SSL - EOF was observed

我的平台是这个

关于我尝试过的 OpenSSL 版本:

我遇到错误:

EIdOSSLConnecError Error connecting with SSL - EOF was observed that violates the protocol

In file Protocols/IdSSLOpenSSLHeaders.pas at line 19418

但是,由于我使用的是最新的一切 - 为什么我会收到此错误?

(发生在对 OpenEncodedConnection 的调用中)

以下是我设置 Indy HTTP 客户端 OpenSSL 处理程序的方法:

FIOHandlerOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create;
FIOHandlerOpenSSL.SSLOptions.SSLVersions := [sslvSSLv23,sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2]
FIOHandlerOpenSSL.Mode := sslmClient;
FIOHandlerOpenSSL.VerifyMode := [];
FIOHandlerOpenSSL.VerifyDepth := 0;

EOF 表示连接意外关闭,在这种情况下是在握手期间。您正在启用多个 SSLVersions,这意味着 Indy 将在内部使用 SSLv23 进行连接。这只有在服务器使用 SSLv23 进行侦听时才有效,从而允许客户端和服务器协商兼容的 SSL/TLS 版本。如果服务器使用特定的 SSL/TLS 版本而不是 SSLv23,则 SSLv23 将无法在客户端运行。您必须在客户端使用相同的特定 SSL/TLS 版本才能匹配。

此问题的另一个原因可能是超时。

After analysis it was finally identified the problem was due to a timeout in milliseconds, rather than seconds. Once fixed, the problem resolved itself.