我们怎样才能连接到一个网站?获取 SSL 错误 1409442E
How can we connect with a website? Getting SSL error 1409442E
我正在使用 Delphi 10.2 Tokyo,试图从网络服务器下载一些信息。
我使用 Indy 10.6.2.5366 通过此函数传递命令 URL https://poloniex.com/public?command=returnCurrencies
(如果我将其粘贴到浏览器中,该命令有效):
function ReadHTTPS(const url: string): string;
var
IdHTTP: TIdHTTP;
IdSSL: TIdSSLIOHandlerSocketOpenSSL;
begin
IdHTTP := TIdHTTP.Create;
try
IdSSL := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
IdHTTP.IOHandler := IdSSL;
result := IdHTTP.Get(url);
if IdHTTP.ResponseText <> '' then
OutputDebugString(PWideChar('ReadHTTPS: ' + IdHTTP.ResponseText));
finally
IdHTTP.Free;
end;
end{ ReadHTTPS};
出现以下错误:
Error connecting with SSL.
error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version
我已经尝试在与 exe 相同的目录中安装 OpenSSL 的最新 DLL,但这并没有解决问题。
有什么想法吗?
确保你使用的up-to-date version of the OpenSSL DLLs支持TLS v1.2(Indy目前支持的最新版本是1.0.2u),然后你需要在 SSLIOHandler 的 SSLOptions.SSLVersions
属性:
中启用 sslvTLSv1_2
标志
IdSSL.SSLOptions.SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
或:
IdSSL.SSLOptions.SSLVersions := [sslvTLSv1_2];
Indy enables only TLS v1.0 by default,显然 https://poloniex.com
不允许 TLS v1.2 之前的 TLS 版本。
我正在使用 Delphi 10.2 Tokyo,试图从网络服务器下载一些信息。
我使用 Indy 10.6.2.5366 通过此函数传递命令 URL https://poloniex.com/public?command=returnCurrencies
(如果我将其粘贴到浏览器中,该命令有效):
function ReadHTTPS(const url: string): string;
var
IdHTTP: TIdHTTP;
IdSSL: TIdSSLIOHandlerSocketOpenSSL;
begin
IdHTTP := TIdHTTP.Create;
try
IdSSL := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
IdHTTP.IOHandler := IdSSL;
result := IdHTTP.Get(url);
if IdHTTP.ResponseText <> '' then
OutputDebugString(PWideChar('ReadHTTPS: ' + IdHTTP.ResponseText));
finally
IdHTTP.Free;
end;
end{ ReadHTTPS};
出现以下错误:
Error connecting with SSL. error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version
我已经尝试在与 exe 相同的目录中安装 OpenSSL 的最新 DLL,但这并没有解决问题。
有什么想法吗?
确保你使用的up-to-date version of the OpenSSL DLLs支持TLS v1.2(Indy目前支持的最新版本是1.0.2u),然后你需要在 SSLIOHandler 的 SSLOptions.SSLVersions
属性:
sslvTLSv1_2
标志
IdSSL.SSLOptions.SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
或:
IdSSL.SSLOptions.SSLVersions := [sslvTLSv1_2];
Indy enables only TLS v1.0 by default,显然 https://poloniex.com
不允许 TLS v1.2 之前的 TLS 版本。