Search code examples
delphicross-compilingindy10

Delphi Indy10 required SSL libraries under Linux?


Using Delphy 10.4: I am trying to start a IdTCPServer with IdServerIOHandlerSSLOpenSSL. Under Linux, I get a "EIdOSSLCouldNotLoadSSLLibrary; Could not load SSL library." Under Windows, this works fine.

In the SSL directory, I now have both the Windows DLL's, and the .so files which I generated by compiling the "openssl-1.1.1j" .

So the SSL directory contains libeay32.dll, ssleay32.dll, libcrypto.so, libssl.so.

Why does it not accept it under Linux?


Solution

  • First, you can't use Windows DLLs on Linux. You need Linux binaries, and on Linux TIdSSLIOHandlerSocketOpenSSL will be looking for libssl.so.x.x.x[l] and libcrypto.so.x.x.x[l] (where x.x.x is the version 1.0.2 or lower, and [l] is an optional letter a..z, or libssl.so/libcrypto.so symlinks that map to such versions).

    Second, TIdSSLIOHandlerSocketOpenSSL, and by extension TIdServerIOHandlerSSLOpenSSL, does not support OpenSSL 1.1.x, only OpenSSL 1.0.2 and earlier, as you can see above.

    To use OpenSSL 1.1.x, you need to use a different IOHandler. One is currently in a pull request awaiting review, and so has not been merged into Indy's main code yet, but you can try it and see if it works for you:

    #299 Added new OpenSSL IO Handler for OpenSSL 1.1.1