在 CentOS 5.3 中升级 OpenSSL

在 CentOS 5.3 中升级 OpenSSL

我想使用一个 IP 来托管具有单独 SSL 证书的多个域(需要 SNI)。在 CentOS 5.3 中,我能找到 RPM 的最新版本的 OpenSSL 是 0.9.8e,它不支持 SNI。

我想升级到 0.9.8k,但找不到 RPM。我可以从源代码编译,但如果我尝试通过 yum 删除现有的 OpenSSL 包,它会要求我删除所有依赖于 OpenSSL 的包(100 多个包)。

编辑:我最终安装了 0.9.8k,没有覆盖以前的版本。现在我既避免破坏依赖关系,又可以使用 SNI。这是最好的做法吗?

答案1

如果您只是覆盖了 rpm 提供的文件,那么您可能会……稍后遇到一些麻烦;至少这会误导任何查看系统的人。

处在你的位置我会做以下两件事之一:

1/ 下载 Centos 的 srpm,执行 rpm -i openssl-whatever.srpm

编辑 /usr/src/redhat/SPEC/openssl.spec 文件,将版本和源文件更新为您要构建的 openssl 版本。

执行 rpmbuild -ba /usr/src/redhat/SPEC/openssl.spec 来构建 RPM 的较新版本。如果一切顺利,您将在 /usr/src/redhat/RPMS/$arch 中得到一些全新的 RPM,然后就可以将它们放入其中。

或者

2/ 从较新的版本(例如 Fedora 12)中获取 openssl srpm,然后执行 rpmbuild --rebuild openssl-whatever.srpm

同样,如果一切顺利,您会得到一些 RPM,尽管这可能不太可靠(例如,ABI 和依赖项可能已从 RHEL 5 更改为 Fedora 12)。

答案2

最好的做法可能是将 OpenSSL 0.9.8k 编译为另一个目录,即 /usr/local 或 /opt,然后针对该新 OpenSSL 编译适当版本的 Apache,而不是系统提供的版本。不幸的是,您将失去通过 RPM 升级的便利,但它会为您提供此功能,而不会对依赖当前 CentOS 版本的 OpenSSL 的其他 100 多个应用程序造成问题。

答案3

您最后是如何安装新版本的?只要您的应用程序没有损坏并且它们知道您安装的新版本 SSL 的路径,那就没问题。

答案4

这是一个老答案了。

但出于多种原因,仍有许多人在运行 RHEL 5 / CentOS 5。不幸的是,RHEL 5 不再受支持,而且 RHEL 5 从未提供 OpenSSL >= 1 的软件包。

如果你对使用外部仓库没有任何顾虑,那么你可以使用“tuxad repo”。它提供了一种不同的、更简单的方法将 RHEL 5 的 OpenSSL 更新为 RHEL 6 的 OpenSSL(仍然受支持):

  1. 为 RHEL 5 安装 tuxad repo:rpm -ihttp://www.tuxad.de/repo/5/tuxad.rpm
  2. 更新软件包:yum update

更多详情可在这找到:

www.tuxad.de/blog/archives/2014/11/19/openssl_updatesenhancements_for_rhel__centos_5 www.tuxad.de/blog/archives/2018/07/21/tuxad_rh5_repo_now_with_phpopenssl1

这个 repo 包含几个针对 OpenSSL 1 重建的软件包:

  • httpd(还包括其他增强功能,如 ECDH 支持)
  • 后缀
  • 鸽舍
  • 卷曲
  • 山猫
  • 杂种狗
  • vsftpd
  • w3m
  • 获得
  • php
  • php 从 RHEL 6 反向移植(在单独的 repo“tuxad-php”中)

相关内容