为了使用更强的 DH 密钥,我已将 Debian 7 (Wheezy) 上的 Apache 2.2 升级到 Apache 2.4.10。我还将 openssl 升级到 OpenSSL 1.0.1k。
我一直在尝试将以下命令添加到我的 Apache2 配置中:
SSLOpenSSLConfCmd DHParameters "/etc/ssl/private/dhparams_4096.pem"
但每次我将其添加到配置文件中时都会收到以下错误:
AH00526:/etc/apache2/mods-enabled/ssl.conf 第 83 行语法错误:
无效命令“SSLOpenSSLConfCmd”,可能是拼写错误或由服务器配置中未包含的模块定义,操作“configtest”失败。
从我在网上看到的情况来看,使用 2.4.8 之前的 Apache 版本时会出现此错误。我使用的是 2.4.10,因此可以排除此问题。有人知道是什么原因导致此问题吗?
编辑:
我认为问题可能出在我使用的 OpenSSL 版本上,因此我从“Stretch”存储库安装了 OpenSSL 1.0.2。它安装正确,我重新启动了 Apache,它似乎可以正常工作。但是,当我添加上述注释时,我得到了同样的错误。
编辑2:
我研究了phpinfo();
输出并在 OpenSSL 部分下注意到了这一点:
OpenSSL Library Version OpenSSL 1.0.1k 8 Jan 2015
OpenSSL Header Version OpenSSL 1.0.1k 8 Jan 2015
我回到服务器并运行openssl version
,结果显示如下输出:
OpenSSL 1.0.2f 28 Jan 2016
因此,无论出于什么原因,Apache 都无法识别系统上较新版本的 OpenSSL。我已多次重新启动 Apache,服务器也已重新启动,但 phpinfo() 输出仍然相同。
答案1
修复。
由于我仍然使用 stretch repo,因此我发出了以下命令:
apt-get install libapache2-mod-php5
这基本上升级了 PHP,这样做解决了我使用旧版本时遇到的 OpenSSL 问题,并且现在也修复了 Apache 的“SSLOpenSSLConfCmd”问题。