我想使用一个 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(仍然受支持):
- 为 RHEL 5 安装 tuxad repo:rpm -ihttp://www.tuxad.de/repo/5/tuxad.rpm
- 更新软件包: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”中)