gpt4 book ai didi

delphi - OpenSSL 1.0.2.g 更新破坏了我的 Delphi 应用程序

转载 作者:行者123 更新时间:2023-12-03 17:37:22 25 4
gpt4 key购买 nike

从 OpenSSL 1.02f 升级到 1.02g 后,我的 Win32 程序失败。
我确保升级后重新启动,并且已验证 libeay32.dlllibssl32.dllssleay32.dll 是否正确在 C:\Windows\SysWOW64 中(如果我将它们复制到我的应用程序目录中也没有帮助)。

var
lIOHandleSSL : TIdServerIOHandlerSSLOpenSSL;
FWebBrokerBridge : TIdHTTPWebBrokerBridge; // = class(TIdCustomHTTPServer)
begin
FWebBrokerBridge := TIdHTTPWebBrokerBridge.Create(Self);
LIOHandleSSL := TIdServerIOHandlerSSLOpenSSL.Create(FWebBrokerBridge); // LIOHandleSSL.SSLOptions.method is sslvTLSv1
LIOHandleSSL.SSLOptions.CertFile := ...
LIOHandleSSL.SSLOptions.RootCertFile := ...
LIOHandleSSL.SSLOptions.KeyFile := ...
LIOHandleSSL.OnGetPassword := HTTPSIOHandlerSSLOpenSSLGetPassword;
FWebBrokerBridge.IOHandler := LIOHandleSSL;
FWebBrokerBridge.Active := true;

错误为EIdOSSLCouldNotLoadSSLLibrary:无法在“Active”语句上加载 SSL 库

可能发生什么情况以及如何解决

这是一个Delphi XE2应用程序,Indy版本是10.5.8.0

FWIW Here is the OpenSSL 1.02g changelog

[编辑添加]
- 我们使用this OpenSSL binary installer .
- 我添加了 WhichFailedToLoad() 函数(来自 IdSSLOpenSSLHeaders.pas),它返回以下字符串:SSLv2_method,SSLv2_server_method,SSLv2_client_method
- 我已从此问题中删除了我的证书文件的描述。 Ken White 正确地指出,代码尚未处于加载证书的阶段

最佳答案

此处介绍:http://www.indyproject.org/sockets/blogs/changelog/20150907.en.aspx

总而言之,SSLv2 并不安全,因此一些 OpenSSL 发行商禁用了 SSL2。您似乎正在使用这样的 OpenSSL。旧版本的 Indy 认为以下功能至关重要:

  • SSLv2_method
  • SSLv2_server_method
  • SSLv2_client_method

如果 OpenSSL DLL 未导出这些函数,这些版本的 Indy 将无法加载。

要解决此问题,您需要执行以下操作之一:

  • 查找不禁用 SSLv2 的 OpenSSL DLL。这听起来不像是解决您的问题的聪明方法。
  • 升级到可以处理禁用 SSLv2 的 Indy 版本。
  • 升级到 Delphi 10 Seattle Update 1(其中包括 Indy 修订版 5311)是处理该问题的最早的 Delphi 版本。

关于delphi - OpenSSL 1.0.2.g 更新破坏了我的 Delphi 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35895377/

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