我想使用一个 IP 来托管具有单独 SSL 证书的多个域(需要 SNI)。在 CentOS 5.3 中,我可以找到 RPM 的最新版本的 OpenSSL 是 0.9.8e,它不支持 SNI。
我想升级到 0.9.8k 但找不到 RPM。我可以从源代码编译,但如果我尝试通过 yum 删除现有的 OpenSSL 包,它希望我删除所有依赖于 OpenSSL 的包(100 多个包)。
编辑:我最终安装了 0.9.8k 而没有覆盖以前的版本。现在我既避免破坏依赖关系,又可以使用 SNI。这是最好的行动吗?
如果您只是简单地覆盖了 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)。
最好的做法可能是将 OpenSSL 0.9.8k 编译到另一个目录 /usr/local 或 /opt,然后针对新的 OpenSSL 而不是系统提供的版本编译适当的 Apache 版本。不幸的是,您将失去能够通过 RPM 升级的便利,但它会为您提供这种能力,而不会导致其他 100 多个依赖于当前 CentOS 版本 OpenSSL 的应用程序出现问题。
你最终是如何安装新版本的?只要您的应用程序没有中断并且他们知道您安装的新版本 SSL 的路径就应该没问题。
这是一个古老的答案。
但是有很多人仍然在运行 RHEL 5 / CentOS 5,原因有几个。不幸的是,RHEL 5 不支持,此外,对于 RHEL 5,从来没有 OpenSSL >= 1 的软件包。
如果您对使用外国回购没有任何顾虑,那么您可以使用“tuxad repo”。它提供了一种不同且更简单的方法来将 RHEL 5 的 OpenSSL 更新为 RHEL 6(仍受支持):
更多详情可在这找到:
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 重建的包: