Apache 2.4.8+上的SSLCertificateChainFile弃用警告


14

我们有来自网络解决方案的网站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版中已过时。

查找SSLCertificateFile的文档,看来我只需要用SSLCertificateFile替换对SSLCertificateChainFile的调用即可。

此更改使我的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证书。我确实记得我们需要为Internet Explorer 添加Apache_Plesk_Install.txt文件,以便在我们的网站上没有SSL警告,但是除此之外,我没有任何线索。

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


6
您需要连接所有证书,客户端证书和中间证书
dawud 2014年

Answers:


9

我遇到过同样的问题。我只是将这些行替换为/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

它就像一个魅力。


根据apache config中的注释也完全有效:“或者,#为方便起见,将CA证书直接附加到服务器#证书后,#引用的文件可以与SSLCertificateFile#相同。”
PeanutPower 2015年

6

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

#!/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

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


4

在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


1
真?私钥?这似乎是个坏主意。只是想知道,因为,我坚决认为这是私人的。
ssl 2014年

2
没错-事情与我在文档中所记得的以及在这两个指令的httpd-ssl.conf文件中存在的文档有所不同。虽然允许,但是不建议在SSLCertificateFile指定的文件中使用私钥。现在编辑答复以适应这一事实。
Khanna111
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.