libssl和libcrypto向后兼容?

我有一个旧的服务器应用程序,需要libssl.so.0.9.6和libcrypto.so.0.9.6。

我的问题是我目前在我的系统上有libssl.so.1.0.0a和libcrypto.so.1.0.0a。 我尝试symlinking到新的库,它让我通过错误,当启动服务器应用程序,但一旦应用程序收到一个新的连接立即崩溃。 但是,为什么没有给出任何错误。 我也尝试从旧的RPM提取这些库,并将它们放在Linux服务器上的正确位置,我会得到同样的问题。

我禁用了SELinux并禁用了iptables。 我有端口转发正确,但是这个问题一直坚持。 在另一台Linux服务器上,我正在运行一个旧的CentOS版本,并且需要openssl版本,而且运行没问题。

我想我已经缩小到与openssl版本的问题。 有没有人有任何想法,为什么这可能会发生,或者如果openssl向后兼容这样一个旧版本。

不, libssl版本是相当严格的指定; 版本之间的ABI兼容性并没有太多的保证(因此为什么sonames是如此具体)。

你应该可以同时安装两个版本(我的Debian工作站上同时安装了libssl0.9.8和libssl1.0.0),如果你正确地做到了它应该可以工作。 不pipe你做的是否正确,我不知道,但我会开始删除不友善的符号链接,并恢复你所做的任何事情,然后开始在二进制文件上运行ldd ,以确定它需要什么,解压/安装它需要的图书馆,然后从那里去。

根据兼容性表,在0.9.6和1.0.0版本的OpenSSL之间存在一些二进制不兼容的变化。

在这里输入图像说明

在这里输入图像说明