Linux – libssl and libcrypto backward compatible

linuxopensslssl

I have an old server application that requires libssl.so.0.9.6 and libcrypto.so.0.9.6.

My issue is I currently have libssl.so.1.0.0a and libcrypto.so.1.0.0a on my system. I tried symlinking to the new libraries and it gets me past the error when starting the server application however once the application receives a new connection it immediately crashes. However, it does not give any error about why. I also tried extracting these libraries from an old RPM and placed them in the correct location on the linux server and I would get the same issue.

I have disabled SELinux and disabled iptables. I have the ports forwarded correctly, however this issue keeps persisting. On another linux server I am running an old CentOS release with the openssl version required and it runs without issue.

I think I have narrowed it down to an issue with the openssl version. Does anyone have any idea why this may be happening or if openssl is backward-compatible to such an old version.

Best Answer

No, libssl versions are quite tightly specified; there's not a lot of guarantees of ABI compatibility between versions (hence why the sonames are so specific).

You should be able to have both versions installed side-by-side (I've got both libssl0.9.8 and libssl1.0.0 installed together on my Debian workstation) and if you do it correctly it should work. Whether you've done it correctly I can't tell, but I'd start by removing the dodgy symlinks and reverting whatever else you've done, then start by running ldd on the binary to identify what it needs, unpacking/installing the libraries it needs, and then going from there.