gpt4 book ai didi

delphi - 动态让 indy 使用 TLSv1.2

转载 作者:行者123 更新时间:2023-12-03 15:08:03 30 4
gpt4 key购买 nike

GitHub 已停止支持 TLS v1.0 和 v1.1 ( https://githubengineering.com/crypto-deprecation-notice/ ),因此我的代码不再需要从中下载。我已经检查过,似乎我需要让 Indy 使用 TLS v1.2,如下所述:Using Indy 10 IdHTTP with TLS 1.2 .

我已经将 OpenSSL DLL 更新到最新版本 http://indy.fulgan.com/SSL/ ,Indy 似乎可以很好地加载它们,但我仍然收到错误。

我得到的错误:

screenshot

如果我在工作线程中动态创建 Indy 对象,如何让 Indy 使用 TLS v1.2?

当前代码:

constructor TDownload.Create(CreateSuspended: Boolean; aurl, afilename: string);
begin
inherited Create(CreateSuspended);
httpclient := TIdHTTP.Create(nil);
httpclient.Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36';
httpclient.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(httpclient);
httpclient.HandleRedirects := True;
httpclient.OnWorkBegin := idhttp1WorkBegin;
httpclient.OnWork := idhttp1Work;
url := aurl;
filename := afilename;
end;

最佳答案

您需要在 TIdSSLIOHandlerSocketOpenSSL.SSLOptions.SSLVersions 属性 ( only sslvTLSv1 (TLS v1.0) is enabled by default ) 中启用 sslvTLSv1_2 标志,例如:

TIdSSLIOHandlerSocketOpenSSL(httpclient.IOHandler).SSLOptions.SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];

另请注意,您可能还必须更新 TIdSSLIOHandlerSocketOpenSSL.SSLOptions.CipherList 属性才能启用 TLS v1.2 密码。引用OpenSSL documentation对于实际的语法。默认情况下,如果您未指定自己的 CipherList 值,Indy 将使用 'AES:ALL:!aNULL:!eNULL:+RC4:@STRENGTH'

编辑:Indy 不再指定默认密码列表。如果 SSLOptions.CipherList 属性为空,OpenSSL 现在可以使用它想要的任何默认密码列表。

关于delphi - 动态让 indy 使用 TLSv1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49058509/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com