[Interest] Linux openssl 1.1.0 versus 1.0.X

Thiago Macieira thiago.macieira at intel.com
Mon Sep 17 05:34:26 CEST 2018


On Sunday, 16 September 2018 18:24:50 PDT Roland Winklmeier wrote:
> Oh I didn’t know that. I just checked on my Debian Stretch and it has a
> libssl.so.1.0.2 but no symlink libssl.so.1.0. Going through the OpenSSL
> load attempts in QtNetwork then I think it tries in the the following order:
> 1. libssl.so.1.0 - not found since not added by the distributor.

That shouldn't happen. Something is misconfigured in Debian. The macro I 
mentioned should be the exact version that matches the SONAME in the library. 
The file matching the SONAME needs to be present (that's the whole point of 
the SONAME after all). You can find the SONAME by running
	objdump -p /usr/lib/whatever/libssl.so.1.0.* | grep SONAME

Please report to Debian and have them correct their headers.

Also, please note that this only applies to something compiled *on* Debian. 
The official Qt binaries from download.qt.io are not compiled on Debian.

I haven't followed OpenSSL for a while so I don't know if distributions still 
patch OpenSSL to make it have different SONAMEs, like they used to in the 
0.9.x days. In those days, distributors had to patch in order to deal with 
OpenSSL breaking compatibility all the time. So if distributions had to patch 
in 1.0.x and distributions applied *different* patches, the official Qt might 
search for things that don't exist on Debian.

One more thing: QtNetwork searches /usr/lib, /usr/lib64, /usr/lib32. It does 
NOT search the Debian-specific subdirs that Debian decided unilaterally to 
create. Setting LD_LIBRARY_PATH will help.

> 2. libssl.so which on Debian links to libssl.so.1.1
> -> Found and load OpenSSL 1.1.
> 
> So if I simply add a symlink for libssl.so.1.0 -> libssl.so.1.0.2 and the
> same for crypto then it should find OpenSSL 1.0 instead?

You're the one with Debian, not me. Try and and tell us.

But I guess it won't.

> I also need to check for openSUSE 15, since I had the same problem there.

That one is easy: the library is /usr/lib64/libssl.so.1.0.0 and that matches 
the SONAME. The package is called libopenssl1_0_0. OpenSSL 1.1 is present too 
and is in libopenssl1_1. The macro in the OpenSSL 1.1 header matches the 
SONAME (I can't check the 1.0 one because I'd have to install it).

But again, the official Qt binaries are not compiled on openSUSE.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center






More information about the Interest mailing list