Linux下Delphi Indy10需要SSL库吗?

问题描述

使用 Delphy 10.4: 我正在尝试使用 IdServerIOHandleRSSLOpenSSL 启动 IdTcpserver。 在 Linux 下,我得到一个“EIdOSSLCouldNotLoadSsllibrary;无法加载 SSL 库”。 在 Windows 下,这可以正常工作。

在 SSL 目录中,我现在拥有 Windows DLL 和我通过编译“openssl-1.1.1j”生成.so 文件

所以SSL目录包含libeay32.dll、ssleay32.dll、libcrypto.so、libssl.so

Linux下为什么不接受?

解决方法

首先,您不能在 Linux 上使用 Windows DLL。您需要 Linux 二进制文件,并且在 Linux 上 TIdSSLIOHandlerSocketOpenSSL 将寻找 libssl.so.x.x.x[l]libcrypto.so.x.x.x[l](其中 x.x.x 是版本 1.0.2 或更低,并且 {{1 }} 是可选的字母 [l],或映射到此类版本的 a..z/libssl.so 符号链接)。

第二个,libcrypto.so,扩展名 TIdSSLIOHandlerSocketOpenSSLdoes not support OpenSSL 1.1.x,只有 OpenSSL 1.0.2 及更早版本,如上所示。

要使用 OpenSSL 1.1.x,您需要使用不同的 TIdServerIOHandlerSSLOpenSSL。一个目前正在等待审查的拉取请求中,因此尚未合并到 Indy 的主要代码中,但您可以尝试一下,看看它是否适合您:

#299 Added new OpenSSL IO Handler for OpenSSL 1.1.1