Delphi Indy10 需要 Linux 下的 SSL 库?

Delphi Indy10 required SSL libraries under Linux?

使用 Delphy 10.4: 我正在尝试使用 IdServerIOHandlerSSLOpenSSL 启动 IdTCPServer。 在 Linux 下,我收到“EIdOSSSLCouldNotLoadSSLLibrary;无法加载 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 或更低,并且 [l] 是可选字母 a..z,或 libssl.so/libcrypto.so 映射到此类版本的符号链接)。

其次,TIdSSLIOHandlerSocketOpenSSL,并通过扩展 TIdServerIOHandlerSSLOpenSSLdoes not support OpenSSL 1.1.x,仅 OpenSSL 1.0.2 及更早版本,如您在上面所见。

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

#299 Added new OpenSSL IO Handler for OpenSSL 1.1.1