Delphi解决 openssl DLL 与 Indy 的SSL/TLS 连接问题

编程入门 行业动态 更新时间:2024-10-07 00:13:14

Delphi解决 openssl <a href=https://www.elefans.com/category/jswz/34/1764592.html style=DLL 与 Indy 的SSL/TLS 连接问题"/>

Delphi解决 openssl DLL 与 Indy 的SSL/TLS 连接问题

昨天,突然间,我的一个 Delphi 程序无法连接到互联网上的各种WMS服务器。我收到以下错误消息:

使用 SSL 连接时出错。错误 1409442E:SSL 例程:ssl3_read_bytes:tlsv1 警报协议版本

由于我使用的是最新版本的Indy,根据Delphi Praxis 上的此线程,这种情况不应该发生。事实证明,不知何故,一个非常旧版本的 openssl DLL libeay32.dllssleay32.dll已被放置在我计算机上的 sarch 路径中(版本 1.0.0e)。获取托管在GitHub或indy.fulgan上的最新版本并将它们放入我的程序Z-Gantt时间管理进度计划甘特图软件的可执行目录中解决了这个问题。

好吧,那么我是怎么发现情况是这样的(除了谷歌搜索猜测之外)?

IdSSLOpenSSL 单元中有一个函数 OpenSSLVersion,它返回 OpenSSL dll 的版本。在撰写本文时,该名称应以“OpenSSL 1.0.2u”开头。

还可以使用两个 DLL 的句柄调用 GetModuleName(分别通过函数 GetSSLLibHandle 和 GetCryptLibHandle 获得),为您提供实际加载的 DLL 的完整路径。当然,要使其工作,DLL 必须已加载,但调用 OpenSSLVersion 可以为您完成此操作。

OpenSslVer := IdSSLOpenSSL.OpenSSLVersion;
OpenSslLibName := GetModuleName(GetSSLLibHandle);
OpenSslCryptLibName := GetModuleName(GetCryptLibHandle);

我希望这对其他人有用,因为我花了一段时间才弄清楚如何获取这些信息。

@Remy Lebeau:非常感谢您已经投入并仍在投入这个库的所有工作。

更多推荐

Delphi解决 openssl DLL 与 Indy 的SSL/TLS 连接问题

本文发布于:2023-12-03 10:50:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1654534.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:DLL   openssl   Delphi   TLS   SSL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!