Jump to content
philipp.hofmann

MacOS 12: OpenSSL with error "Clients should not load the unversioned libcrpto dylib as it does not have a stable ABI."

Recommended Posts

I have a new problem with MacOS12 (older versions are fine).

I use the following OpenSSL-Libs to send mails:

Code:
InitSSL from /Applications/icTrainer.app/Contents/MacOS
SSL-Version: OpenSSL 1.0.2s 28 May 2019

and the files have the names

Code:
libcrypto.1.0.0.dylib
libssl.1.0.0.dylib

but I get the following error message now:

Code:
Invalid dylib load. Clients should not load the unversioned libcrpto dylib as it does not have a stable ABI.
...
libcrypto.dylib

-> here I can´t see the version number.


a) What to do?
b) Where to get the newest version of  1.0.0-MacOS-64-Libs?

 

Best regards, Philipp

Grüße, Philipp

Share this post


Link to post
23 hours ago, philipp.hofmann said:

I use the following OpenSSL-Libs to send mails:

Code:
InitSSL from /Applications/icTrainer.app/Contents/MacOS
SSL-Version: OpenSSL 1.0.2s 28 May 2019

and the files have the names

Code:
libcrypto.1.0.0.dylib
libssl.1.0.0.dylib

You are actually trying to use OpenSSL 1.0.0, not 1.0.2.  1.0.0 is quite old.

Quote

but I get the following error message now:

Code:
Invalid dylib load. Clients should not load the unversioned libcrpto dylib as it does not have a stable ABI.
...
libcrypto.dylib

-> here I can´t see the version number.

That means the code is trying to load the dylibs using unversioned symlinks, which can map to versioned dylibs which you are not expecting, such as for OpenSSL 1.1.x, etc.

Quote

a) What to do?

Don't use symlinks when you need to load a specific version.

 

Out of curiosity, are you using Indy to send your emails?  If so, then on 'Nix platforms it has IdOpenSSLSetCanLoadSymLinks() and IdOpenSSLSetLoadSymLinksFirst() functions in the IdSSLOpenSSLHeaders unit.  The defaults are both True, but you should set them to False in this situation.

Edited by Remy Lebeau

Share this post


Link to post

Don´t ask my why the version number in the file name is 1.0.0. The libs are returning in my logs 1.0.2, so it should be fine. 

Thanks for the tip with the symlinks, that works fine with MacOS 12.0.

Share this post


Link to post

And now I get the following info about the used SSL-libraries:
09:31:23.452 354530816-Info InitSSL from /Applications/icTrainer.app/Contents/MacOS
09:31:23.477 354530816-Info SSL-Version: LibreSSL 2.8.3

But it works.

Share this post


Link to post
On 11/7/2021 at 1:33 AM, philipp.hofmann said:

09:31:23.477 354530816-Info SSL-Version: LibreSSL 2.8.3

But it works.

LibreSSL is backwards compatible with OpenSSL 1.0.1, so Indy's OpenSSL loading code has *very limited* support for detecting LibreSSL at runtime and not failing on it.  But that is no guarantee that it will actually work correctly for all operations, so use at your own risk.  Otherwise, you should install the actual OpenSSL dylibs directly in your app folder instead.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×