delphi - 无法加载 SSL 库

标签 delphi openssl indy delphi-2007 idhttp

我正在尝试使用 REST。所以我使用 TIdHTTP成分。但它说“无法加载 SSL 库”。 我缺少什么?我对 SSL 的了解为零。

我使用的是 Delphi 2007、Indy 10.1.5 和 Windows 32 位。

我输入libeay32.dllssleay32.dll在我的 EXE 目录中(我在 https://indy.fulgan.com/SSL/ 中找到了这些 DLL 文件,文件 openssl-1.0.2t-i386-win32.rar )。

type
  TForm1 = class(TForm)
  IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
  ...

procedure TForm1.btn_ReqCheckServerClick(Sender: TObject);
var
  s: string;
  lHTTP: TIdHTTP;
const
  URL_CHECK_SERVER = 'http://example';  // some URL site to ping
begin
  lHTTP := TIdHTTP.Create(nil);
  try
    lHTTP.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:=sslvTLSv1;
    lHTTP.ProtocolVersion:=pv1_1;
    lHTTP.Request.ContentType := 'application/json';
    lHTTP.HandleRedirects := True;
    s := lHTTP.Get(URL_CHECK_SERVER);
    ShowMessage(s);
  finally
    lHTTP.Free;
  end;
end;

最佳答案

Does anybody know where the latest version of Indy can be download? At https://www.indyproject.org, many links are broken.

Indy 的 SVN 存储库即将退役。 Indy 的 GitHub 存储库位于 https://github.com/IndySockets/Indy现在是向前推进的事件存储库。 Fulgan 最近关闭了 Indy 的 SVN 和 GitHub 存储库之间的同步。

Fulgan 的夜间 zip 文件位于 https://indy.fulgan.com/ZIP/不再是 Indy 的最新开发快照(自上次 Fulgan 从 SVN 拉取其快照以来,已经对 GitHub 进行了几次 checkin )。由于用户可以从 GitHub 提取 Indy 源代码的 zip 文件,因此它变得多余了。

Indy 很快还将为其 OpenSSL lib 二进制文件创建一个新的 GitHub 存储库,这将成为 Indy 的 Fulgan 镜像棺材上的最后一颗钉子。

Indy 的网站为 https://www.indyproject.org尚未更新以反射(reflect)这一新信息。尽管在开发快照的下载部分中有一个指向 GitHub 存储库的链接。

您可以转到 GitHub 存储库并获取 /Lib 文件夹。您至少只需要 /Lib/Core/Lib/Protocols/Lib/System 文件夹即可编译 Indy。

I'm trying to use REST. So I'm using the TIdHTTP component. But it is not working. It says 'Could not load SSL Library'. I already read about this error from this forum, but still it is not working.

您可以使用 Indy 的 IdSSLOpenSSLHeaders 单元中的 WhichFailedToLoad() 函数来找出 Indy 无法加载 OpenSSL 的原因。 DLL 无法加载到内存中,或者 DLL 缺少 Indy 所需的导出。

但请注意,10.1.5 是 Indy 的一个非常旧的版本,最新版本是 10.6.2。 10.1.5 很可能根本无法处理自 10.1.5 发布以来多年来对 OpenSSL 所做的更改。例如,删除对 SSLv2 和 SSLv3 的支持可能是旧版本 Indy 无法加载新版本 OpenSSL DLL 的罪魁祸首。

关于delphi - 无法加载 SSL 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59083537/

相关文章:

delphi - 保存和恢复事件处理程序

delphi - 如何在 Delphi 7 中释放 Windows 句柄指针?

php - 从 PHP 到 Golang 的 aes-256-gcm 解密

ssl - 为域和子域创建自签名证书 - NET::ERR_CERT_COMMON_NAME_INVALID

c++ - VisualC++ DLL 中的 OpenSSL

multithreading - 在 OnExecute 事件中使用数据库 (Indy)

delphi - 如何跟踪 TIdHttp 的原始请求和响应内容

delphi - Delphi快速应用程序开发在可重用性方面的最佳实践

delphi - 印地 9 与德尔福 : How to enable TLS 1. 0?

Delphi/Indy 通过主机名查找解析 DNS 域