我有一个需要 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
二进制文件以确定它需要什么,解压/安装它需要的库,然后从那里开始。