我的平台就是这个
关于OpenSSL版本,我尝试过:
我收到错误:
EIdOSSLConnecError与SSL连接时出错 - 观察到EOF 违反协议
在第19418行的文件Protocols / IdSSLOpenSSLHeaders.pas中
然而,因为我正在使用最新的一切 - 为什么我会收到此错误?
(发生在 OpenEncodedConnection 的调用中)
以下是我设置Indy HTTP客户端OpenSSL处理程序的方法:
FIOHandlerOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create;
FIOHandlerOpenSSL.SSLOptions.SSLVersions := [sslvSSLv23,sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2]
FIOHandlerOpenSSL.Mode := sslmClient;
FIOHandlerOpenSSL.VerifyMode := [];
FIOHandlerOpenSSL.VerifyDepth := 0;
答案 0 :(得分:5)
EOF表示连接意外关闭,在这种情况下是握手期间。您正在启用多个SSLVersions,这意味着Indy将在内部使用SSLv23进行连接。这仅在服务器使用SSLv23进行侦听时才有效,从而允许客户端和服务器协商兼容的SSL / TLS版本。如果服务器使用特定的SSL / TLS版本而不是SSLv23,则SSLv23将无法在客户端上运行。您必须在客户端使用相同的特定SSL / TLS版本才能匹配。
答案 1 :(得分:0)
此问题的另一个原因可能是超时。
经过分析,最终确定问题是由于以毫秒为单位的超时,而不是秒。解决后,问题便自行解决。