为什么我安装了 openssl1.0.1,但我的服务器显示 openssl 0.9.8?

为什么我安装了 openssl1.0.1,但我的服务器显示 openssl 0.9.8?

我正在创建一个测试服务器容易受到 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
    
  • 然后重新安装所有其他需要的模块OpenSSLdevel/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。

相关内容