Support OpenSSL 1.1 DLL names?

Discussion of open issues, suggestions and bugs regarding UniDAC (Universal Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
Hop
Posts: 3
Joined: Wed 25 Nov 2015 18:09

Support OpenSSL 1.1 DLL names?

Post by Hop » Fri 18 Aug 2017 19:23

The OpenSSL team selected its 1.0.2 series for long term support. However, looking ahead for other parts of our application (in Rad Studio [C++Builder] 2007), we've already adopted the OpenSSL 1.1 series -- which has differently named DLLs (libcrypto-1_1.dll & libssl-1_1.dll replace libeay32.dll & ssleay32.dll).

What are your plans for UniDac (particularly the MySQL provider) to support the new DLLs?

ViktorV
Devart Team
Posts: 3168
Joined: Wed 30 Jul 2014 07:16

Re: Support OpenSSL 1.1 DLL names?

Post by ViktorV » Mon 21 Aug 2017 10:28

UniDAC uses the following OpenSSL libraries names: libeay32.dll and ssleay32.dll. This behavior has been already used for many years by our users, who use various library versions. Therefore, we cannot change this behavior.
To solve the issue, you can rename libcrypto-1_1.dll and libssl-1_1.dll into libeay32.dll and ssleay32.dll correspondingly.

Hop
Posts: 3
Joined: Wed 25 Nov 2015 18:09

Re: Support OpenSSL 1.1 DLL names?

Post by Hop » Wed 23 Aug 2017 20:05

Because of their interdepencies, the DLLs cannot be renamed.
Per https://www.openssl.org/policies/releasestrat.html the OpenSSL group will support the 1.0.2 API and DLL names through December 2019. Between now and then, they will choose a 1.1.X branch to become the next Long-Term-Support release. The 1.1 branches all use the new DLL naming convention.
What is your strategy for compatibility?

ViktorV
Devart Team
Posts: 3168
Joined: Wed 30 Jul 2014 07:16

Re: Support OpenSSL 1.1 DLL names?

Post by ViktorV » Mon 28 Aug 2017 14:51

To solve the issue, please try to set the LIBEAY32DLL and SSLEAY32DLL global variables from the CRVioTcpSSL unit to the required values. For example:

Code: Select all

initialization
  LIBEAY32DLL := 'libcrypto-1_1.dll';
  SSLEAY32DLL := 'libssl-1_1.dll';

Hop
Posts: 3
Joined: Wed 25 Nov 2015 18:09

Re: Support OpenSSL 1.1 DLL names?

Post by Hop » Fri 01 Sep 2017 18:01

Overriding LIBEAY32DLL and SSLEAY32DLL is an excellent feature for anyone needing to install the OpenSSL 1.0 ssleay32.dll under a different name.
However, attempting to use the 1.1 DLL names results in an "SSL function is not linked..." exception, so I suspect the OpenSSL 1.0 and 1.1 API's produce entry points that differ just enough that the CRVioTcpSSL unit cannot recognize the latter.

ViktorV
Devart Team
Posts: 3168
Joined: Wed 30 Jul 2014 07:16

Re: Support OpenSSL 1.1 DLL names?

Post by ViktorV » Mon 04 Sep 2017 13:08

You can use MyDAC with SecureBridge components to connect to MySQL database, using SSL or SSH protocol. SecureBridge uses its own implementation of the SSL protocol without using third-party libraries.
You can obtain information about connecting to MySQL server using SSL or SSH in our documentation: https://www.devart.com/mydac/docs/?secu ... ctions.htm You can see an example of MyDAC and securebridge coworking in demo projects: %MyDACDemos%\TechnologySpecific\securebridge, where %MyDACDemos% is MyDAC of demo projects an installation path on your computer.

Post Reply