【发布时间】:2020-08-20 17:12:31
【问题描述】:
在我的 Delphi(10.3 社区版)程序中,我尝试将 Indy 与 OpenSSL 库一起使用,但收到错误消息
无法加载 SSL 库
我的 OpenSSL 库是 1.0.2u 版本,我将 libeay32.dll 和 ssleay32.dll 文件放在我的程序 EXE 目录以及 Windows\SYSWOW64 和 Windows\System32 中。
我已经安装了 Embarcadero Delphi 补丁RS1033_Indy_SSL_Patch。
异常之后,我调用WhichFailedToLoad(),结果是
加载 libeay32.dll 失败
这是一个引发异常的简单程序:
url := 'https://www.google.it';
try
Web := TIdHTTP.Create(nil);
hIOHand := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
hIOHand.SSLOptions.SSLVersions := [sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2,sslvSSLv23];
Web.IOHandler := hIOHand;
Web.Request.UserAgent := INET_USERAGENT; //Custom user agent string
Web.RedirectMaximum := INET_REDIRECT_MAX; //Maximum redirects
Web.HandleRedirects := INET_REDIRECT_MAX <> 0; //Handle redirects
Web.ReadTimeOut := INET_TIMEOUT_SECS * 1000; //Read timeout msec
try
Sito := Web.Get(Url);
Sito := DateToStr(Web.Response.LastModified) + Sito;
except
on e : exception do
stg := WhichFailedToLoad();
end;
finally
Web.Free;
end;
你能帮我解决这个问题吗?
【问题讨论】:
-
附带说明,您根本不应该在
SSLOptions.SSLVersions属性中包含sslvSSLv23。在此特定示例中,TIdSSLIOHandlerSocketOpenSSL将简单地丢弃它。