libssl 和 libcrypto 向后兼容吗?

libssl 和 libcrypto 向后兼容吗?

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

我的问题是,我的系统上目前有 libssl.so.1.0.0a 和 libcrypto.so.1.0.0a。我尝试符号链接到新库,它在启动服务器应用程序时让我绕过错误,但是一旦应用程序收到新连接,它就会立即崩溃。但是,它没有给出任何关于原因的错误。我还尝试从旧的 RPM 中提取这些库并将它们放在 Linux 服务器上的正确位置,但我仍然遇到同样的问题。

我已禁用 SELinux 和 iptables。我已正确转发端口,但此问题仍然存在。在另一台 Linux 服务器上,我运行的是旧版 CentOS,并安装了所需的 openssl 版本,运行起来没有问题。

我认为我已经将问题缩小到 openssl 版本的问题。有谁知道为什么会发生这种情况,或者 openssl 是否向后兼容这么旧的版本。

答案1

不,libssl版本的指定非常严格;版本之间没有太多 ABI 兼容性的保证(这就是为什么 soname 如此具体)。

你应该能够同时安装这两个版本(我的 Debian 工作站上同时安装了 libssl0.9.8 和 libssl1.0.0),如果你这样做正确地它应该可以工作。我不知道你是否做对了,但我会先删除有问题的符号链接,然后恢复你所做的其他操作,然后开始运行ldd二进制文件以确定它需要什么,解压/安装它需要的库,然后从那里开始。

答案2

根据兼容性表

在此处输入图片描述

...

在此处输入图片描述

我是这份报告的作者,因此请随意在评论中提出任何问题。

相关内容