Apache 2.4.8+ 上的 SSLCertificateChainFile 弃用警告

Apache 2.4.8+ 上的 SSLCertificateChainFile 弃用警告

我们的网站拥有 Network Solutions 提供的 SSL 证书。将 Apache/OpenSSL 升级到 2.4.9 版后,启动 HTTPD 时出现以下警告:

AH02559: The SSLCertificateChainFile directive (/etc/httpd/conf.d/ssl.conf:105) is deprecated, SSLCertificateFile should be used instead

根据Apache mod_ssl 手册事实确实如此:

SSLCertificateChainFile 已弃用

当 SSLCertificateFile 扩展为还可以从服务器证书文件加载中间 CA 证书时,SSLCertificateChainFile 在 2.4.8 版本中已过时。

查找文档SSL证书文件,看起来我只需要将我的电话替换为SSL证书链文件SSL证书文件

此更改使我的 ssl.conf 从此变为:

SSLCertificateFile /etc/ssl/STAR.EXAMPLE.COM.crt
SSLCertificateKeyFile /etc/ssl/server.key
SSLCertificateChainFile /etc/ssl/Apache_Plesk_Install.txt

更改为:

SSLCertificateFile /etc/ssl/STAR.EXAMPLE.COM.crt
SSLCertificateFile /etc/ssl/Apache_Plesk_Install.txt
SSLCertificateKeyFile /etc/ssl/server.key

...但这不起作用。Apache 根本拒绝启动,没有任何错误消息。

我不确定这里还能尝试什么,因为我对 mod_ssl 或 SSL 证书不太熟悉。我记得我们需要添加Apache_Plesk_安装.txt文件以使 Internet Explorer 在我们的网站上没有 SSL 警告,但除此之外我就不知道了。

任何帮助都将不胜感激。谢谢。

答案1

我也遇到了同样的问题。我刚刚将这些行替换为/etc/apache2/site-enabled/default-ssl.conf

SSLCertificateFile    /etc/ssl/certs/domain.crt
SSLCertificateKeyFile /etc/ssl/private/domain.key
#SSLCertificateChainFile /etc/apache2/ssl.crt/chain.crt

如您所见,我只是注释掉了SSLCertificateChainFile。然后,看到与您相同的错误,我将我的chain.crt 在最后domain.crt,就像这样:

root@host~: cat /etc/apache2/ssl.crt/chain.crt >> /etc/ssl/certs/domain.crt

而且效果非常好。

答案2

我使用以下脚本创建包含链式证书的证书包。

#!/bin/sh
#
# Convert PEM Certificate to ca-bundle.crt format
#

test ! $1 && printf "Usage: `basename $0` certificate" && exit 1

# Friendly Name and Underline Friendly Name with equal signs
openssl x509 -in $1 -text -noout | sed -e 's/^  *Subject:.*CN=\([^,]*\).*/\1/p;t  c' -e 'd;:c' -e 's/./=/g'
# Output Fingerprint and swap = for :
openssl x509 -in $1 -noout -fingerprint | sed -e 's/=/: /'
# Output PEM Data:
echo 'PEM Data:'
# Output Certificate
openssl x509 -in $1
# Output Certificate text swapping Certificate with Certificate Ingredients
openssl x509 -in $1 -text -noout | sed -e 's/^Certificate:/Certificate Ingredients:/'

要使用它,请从服务器证书开始,然后依次通过证书链中的任何中间证书回到根证书。

./bundle.sh myserver.crt >myserver.chain
./bundle.sh intermediate.crt >>myserver.chain
./bundle.sh root.crt >>myserver.chain

其中相应的证书名称应替换为您的真实证书名称。

答案3

将站点证书、中间文件以及 SSLCertificateFile 指令指定的文件放在一起,将私钥连接到 SSLCertificateKeyFile 指定的文件中,这样一切就都设置好了。虽然您可以将私钥与证书放在同一个文件中,但不建议这样做。请查看文档了解更多详细信息:
http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslcertificatefile
我建议不要将根 CA 证书作为 SSLCertificateFile 的一部分,因为客户端应该信任根 CA 证书,这样证书验证才能按设计进行。
此外,如果 apache 错误日志中没有任何内容,那么可以将错误日志的粒度设置得更细,例如http://httpd.apache.org/docs/current/mod/core.html#loglevel

相关内容