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)。获取托管在GitHubindy.fulgan.com上的最新版本并将它们放入我的程序Z-Gantt时间管理进度计划甘特图软件的可执行目录中解决了这个问题。

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

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

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

Delphi 复制代码
OpenSslVer := IdSSLOpenSSL.OpenSSLVersion;
OpenSslLibName := GetModuleName(GetSSLLibHandle);
OpenSslCryptLibName := GetModuleName(GetCryptLibHandle);

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

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

相关推荐
小程序照片合成9 分钟前
window xampp apache使用腾讯云ssl证书配置https
apache·腾讯云·ssl
兴达易控1 小时前
艾默生流量计与Profibus DP主站转Modbus RTU/TCP网关通讯案例
网络协议
网安小张1 小时前
已解决——如何让网站实现HTTPS访问?
网络协议·http·https
盛满暮色 风止何安3 小时前
IS-IS 中间系统到中间系统
服务器·网络·网络协议·安全·web安全·网络安全·智能路由器
收费界的一股清流6 小时前
npm 安装时 SSL 证书过期问题笔记
笔记·npm·ssl
智联视频超融合平台7 小时前
智慧赋能光伏运维——无人机巡检+地面监控双链路覆盖,打造光伏电站管理新标杆
运维·人工智能·网络协议·信息可视化·音视频·无人机
大大大大小小8 小时前
[特殊字符] SSL/TLS 中的密钥协商流程笔记
笔记·网络协议·ssl
森明帮大于黑虎帮11 小时前
WebSocket 客户端 DLL 模块设计说明(基于 WebSocket++ + Boost.Asio)
网络·websocket·网络协议
周杰伦的稻香11 小时前
TCP和套接字SSL加密连接行为分析
网络协议·tcp/ip·ssl
老六ip加速器12 小时前
如何快速更换电脑浏览器ip:教程与注意事项
网络·网络协议·tcp/ip