修复替换的 OpenSSL 安装

修复替换的 OpenSSL 安装

我之前在我的 centos 机器上用 openssl10 替换了 openssl,使用类似这些说明

rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/...
     ...x86_64/ius-release-1.0-11.ius.centos6.noarch.rpm
yum install yum-plugin-replace
# Edit /etc/yum.repos.d/ius-archive.repo and 
# enable the ius-archive repo by changing enabled=0 to enabled=1.
yum replace openssl --replace-with openssl10

然后,当我执行常规操作时,yum update由于 openssl 而出现错误,因此我改为执行以下操作:

yum update -x openssl -x postfix

这似乎工作正常,但事实上,我无法再通过 ssh 重新连接到该盒子:

me@local $ ssh -S none root@the_server
ssh_exchange_identification: Connection closed by remote host

关于如何从这种情况中恢复,有什么想法吗?

编辑:当我sshd在服务器上运行时(我仍然有一个打开的连接),出现以下错误:

ssh: relocation error: ssh: symbol SSLeay_version, version OPENSSL_1.0.1 
    not defined in file libcrypto.so.10 with link time reference

答案1

openssl使用 IUS 存储库并用其替换openssl10然后尝试升级到 CentOS 6.5 时出现了一个错误。

基本上你要做的就是返回库存openssl- 无论如何现在是版本 1.0.1:

yum replace openssl10 --replace-with openssl

openssl10现在不需要使用,也不支持。
这也是为什么它仅在存档存储库中可用。

更多信息请参阅:https://lists.launchpad.net/ius-community/msg00807.htmlhttps://bugs.launchpad.net/ius/+bug/1034961/comments/60

答案2

应该首先尝试 @faker 的回答,但如果这不起作用,我发现以下说明rpm 网站

如果你想安全起见,也可以下载 yum 的 rpm 和它的所有依赖项

(请用适合您的安装的确切名称进行替换)

wget http://mirror.centos.org/centos/6/os/x86_64/Packages/openssl-<version>.rpm
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/openssl-devel-<version>.rpm

rpm -i openssl-*
    file /usr/lib64/libcrypto.so.1.0.1e from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64
    .... lots more lines

现在备份所有有冲突的文件,以便在出现问题时可以将它们恢复到正确的文件夹中。

最后,你可以大胆尝试一下:

rpm  -iv --replacepkgs --replacefiles openssl-*

如果一切顺利的话yum update应该可以工作。

编辑:还删除软件包,以便它们不会与未来的更新发生冲突:

rpm -qa |grep ius
... lists packages
rpm -e openssl10-libs-1.0.1e-1.ius.el6.x86_64
rpm -e openssl10-devel-1.0.1e-1.ius.el6.x86_64

答案3

更轻松地解决上述问题

yum update openssl openssl-devel

相关内容