当前位置: 首页 > news >正文

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.com上的最新版本并将它们放入我的程序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:非常感谢您已经投入并仍在投入这个库的所有工作。

http://www.lryc.cn/news/206506.html

相关文章:

  • 单片机仿真设计打包项目
  • Java练习题-输出二维数组对角线元素和
  • Python调用ctype的动态库时出现的问题记录
  • 面试算法38:每日温度
  • 流程控制语句中的顺序结构、分支结构和循环结构以及示例和详细代码解释为什么这样写(1)
  • MFC Windows 程序设计[334]之自定义编辑框(附源码)
  • MOS管特性及其几种常用驱动电路详解,电子工程师手把手教你
  • C#,数值计算——分类与推理Phylo_wpgma的计算方法与源程序
  • Spring MVC 常用的注解
  • winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo
  • 【Java 进阶篇】使用 Java 和 Jsoup 进行 XML 处理
  • QT图形视图框架绘制曲线图和Smith图
  • 0032【Edabit ★☆☆☆☆☆】【每秒帧数】Frames Per Second
  • 【LeetCode】1423 可获得的最大点数(中等题)
  • 2024年天津中德应用技术大学专升本物流管理专业课考试大纲
  • 目标检测YOLO实战应用案例100讲-船舶目标检测及编队识别(续)
  • 【MySQL索引与优化篇】索引的数据结构
  • Qt Widget 删除之后还会显示 问题
  • 关系型数据库的问题和NoSQL数据库的应用
  • 二进制安装k8s
  • 超简洁ubuntu linux 安装 cp2k
  • 判断日期区间或季节等
  • 入门人工智能 —— 学习数据持久化、使用 Python 将数据保存到mysql(7)
  • c语言从入门到实战——分支和循环
  • 交易所(Exchange, ACM/ICPC NEERC 2006, UVa1598)rust解法
  • shell_51.Linux获取用户输入_无显示读取,从文件中读取
  • NOIP2023模拟2联测23 集训
  • 【设计模式】第3节:设计模式概论
  • 风力发电功率预测(CEEMDAN-LSTM-CNN-CBAM模型,Python代码)
  • 精通代码复用:设计原则与最佳实践