![为什么我安装了 openssl1.0.1,但我的服务器显示 openssl 0.9.8?](https://linux22.com/image/631272/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E5%AE%89%E8%A3%85%E4%BA%86%20openssl1.0.1%EF%BC%8C%E4%BD%86%E6%88%91%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%98%BE%E7%A4%BA%20openssl%200.9.8%EF%BC%9F.png)
我正在创建一个测试服务器是容易受到 Heartbleed 漏洞的攻击。
我的服务器在 FreeBSD VM 上运行 Apache 2.4。默认情况下,FreeBSD 似乎默认安装了 OpenSSL 0.9.8。我尝试从端口卸载 OpenSSL,但由于我没有通过端口安装它(默认情况下),因此我无法通过这种方式卸载它。
然后我试图忽略它并从源代码安装 OpenSSL 1.0.1;但是当我重新启动 apache 服务器并检查使用curl --head 127.0.0.1
“OpenSSL 0.9.8”的站点时显示。
然后我尝试重新安装/重新配置 apache,但相同的测试结果为“OpenSSL 0.9.8”。
因此,我尝试像这样替换默认的 OpenSSL:
- 通过端口安装较新的 OpenSSL(试图替换默认版本)
- 卸载端口安装的 OpenSSL(试图完全删除默认的 OpenSSL)
- 我的源安装只剩下一个,我想这必须改变它
- 测试仍然产生“OpenSSL 0.9.8”(悲伤)
那么,为什么它仍然显示“OpenSSL 0.9.8”?
我也想将网站改为使用 OpenSSL 1.0.1,因此这方面的建议将会很有帮助。
答案1
缺少的步骤是你必须告诉系统你想使用OpenSSL从基础系统的端口进行访问:
建造OpenSSL来自港口:
创建/添加
/etc/make.conf
以下行:WITH_OPENSSL_PORT=yes
然后重新安装所有其他需要的模块OpenSSL(
devel/apr1
,,www/apache24
...)您可以检查OpenSSL使用的库Apache24 的(事实上apache24 mod_ssl模块):
# ldd /usr/local/libexec/apache24/mod_ssl.so |grep ssl /usr/local/libexec/apache24/mod_ssl.so: libssl.so.8 => /usr/local/lib/libssl.so.8 (0x801634000)
apache24mod_ssl现在正在使用OpenSSL来自港口的库。
答案2
编译 OpenSSL 对你没有太大帮助。你的 Apache 仍然与旧的 OpenSSL 链接。你可以使用命令来验证这一点ldd
。
您应该重新编译 Apache 或mod_ssl
将其链接到新的 OpenSSL。