Delphi “印地”;“对等端重置连接”;犯错误10054在特定网站上

Delphi “印地”;“对等端重置连接”;犯错误10054在特定网站上,delphi,indy,rad-studio,Delphi,Indy,Rad Studio,我在使用一些代码时遇到了一些问题,这些代码已经运行了很多年,涉及Indy和网页下载。我使用RAD Studio 10.2 Tokyo 网页如下: IDHTTP1.Get('https://donet.rfi.it/RFIPlatform/showDoc.do?compartimentoHidden=AN&docTypeHidden=CC'); 我使用的代码是一个应用程序的一部分,自2011年以来,该应用程序一直使用相同的代码,并且一直运行良好。代码如下: IDHTTP1.Get('h

我在使用一些代码时遇到了一些问题,这些代码已经运行了很多年,涉及Indy和网页下载。我使用RAD Studio 10.2 Tokyo

网页如下:

IDHTTP1.Get('https://donet.rfi.it/RFIPlatform/showDoc.do?compartimentoHidden=AN&docTypeHidden=CC');

我使用的代码是一个应用程序的一部分,自2011年以来,该应用程序一直使用相同的代码,并且一直运行良好。代码如下:

IDHTTP1.Get('https://donet.rfi.it/RFIPlatform/showDoc.do?compartimentoHidden=AN&docTypeHidden=CC');
我得到了一个“连接重置由对等10054”错误,因为该网站关闭了,几天前,当它再次出现时,代码不再工作

上面提到的网页可以从浏览器中调用,甚至可以用WGET下载,但是Indy失败了

我尝试使用各种选项(Cookie处理、句柄重定向、HTTPOptions等),并且还将SSL库更新为1.0.2q(Indy还不能使用OpenSSL 1.1.0),但整个过程都不想起作用


有人能帮我弄清楚发生了什么事吗?它必须确保网站上的一些东西,因为我使用的代码自2011年以来是相同的,并且一直有效。在这之前,相同的代码自2008年起就在类似的应用程序中工作。

Indy的
TIdSSLIOHandlerSocketOpenSSL
组件默认情况下仅启用TLS 1.0。有问题的网站()不再接受TLS 1.0(可能是为了更新软件而离线的原因),现在只接受TLS 1.1+

TIdHTTP
能够成功建立到
donet.rfi的TCP/IP连接。它:443
,但只要
TIdSSLIOHandlerSocketOpenSSL
发送TLS 1.0握手请求,服务器就会强制关闭TCP连接。当
TIdSSLIOHandlerSocketOpenSSL
尝试读取服务器的握手响应时,您收到“由对等方重置连接”错误


您需要配置
TIdSSLIOHandlerSocketOpenSSL
以启用TLS 1.1和/或1.2。您可以通过它的
SSLOptions.SSLVersions
属性来实现这一点。然后
TIdHTTP.Get()
将再次工作(我对它进行了测试)。

另一方面,TLS1.0被官方认为是不安全的,许多行业实际上被迫更新到至少TLS1.1以保持安全。例如,为了符合PCI标准,支付处理不再允许为此使用TLS 1.0。到2020年3月,TLS 1.0将基本上不再受到网络上所有大玩家的支持。是的,Indy已经在未来默认启用了TLS 1.1和1.2。阅读更多内容,TLS 1.1似乎也在临终之际,在同一时间线上……我不得不使用IdHTTP.IOHandler:=idsslohandlersocketopenssl1;向表单中添加组件是不够的。。。