Linux下DelphiIndy10需要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或更低版本,并且[l]是一个可选的字母a..z,或映射到此类版本的libssl.so/libcrypto.so符号链接)。
其次,TIdSSLIOHandlerSocketOpenSSL通过扩展TIdServerIOHandlerSSLOpenSSL,不支持 OpenSSL 1.1.x,仅支持OpenSSL 1.0.2 及更早版本,如上所示。
要使用 OpenSSL 1.1.x,您需要使用不同的IOHandler. 一个目前正在等待审查的拉取请求中,因此尚未合并到 Indy 的主要代码中,但您可以尝试一下,看看它是否适合您:
#299 为 OpenSSL 1.1.1 添加了新的 OpenSSL IO 处理程序