libssl 和 libcrypto 向后兼容吗?

libssl 和 libcrypto 向后兼容吗?

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

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

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

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

答案1

不,OpenSSL 不向后兼容,正如您所注意到的,强制提供不正确版本的库只会让您的软件死掉。

正确的做法是获得正确的预期库版本。您应该检查您的发行版,看看它们是否有兼容包。一些发行版具有最新的 OpenSSL 软件包,但它们也具有包含旧库的附加软件包,以满足对旧库的特定依赖关系。

答案2

根据 OpenSSL 的 0.9.6 和 1.0.0 版本之间存在一些二进制不兼容的更改兼容性表

在此输入图像描述

...

在此输入图像描述

相关内容