最近我将 Apache 从 2.2 升级到了 2.4,但我不知道如何弃用SSLCertificateChainFile
指令。
错误:
me@jessie:~$ sudo apache2ctl configtest
AH02559: The SSLCertificateChainFile directive (/etc/apache2/sites-enabled/https.conf:103) is deprecated, SSLCertificateFile should be used instead
Syntax OK
我的当前设置:
SSLCertificateFile /etc/apache2/cert/ssl.crt
SSLCertificateKeyFile /etc/apache2/cert/ssl.key
SSLCertificateChainFile /etc/apache2/cert/sub.class1.server.sha2.ca.pem
SSLCACertificateFile /etc/apache2/cert/ca.pem
该证书由 StartCOM 签名。手册上说,现在整个链应该位于一个文件中,由指令指定SSLCertificateFile
,但我不知道应该将哪些密钥以及以何种顺序连接到该文件。
答案1
假设您在 apache 配置中使用它:
SSLCertificateFile /etc/apache2/cert/ssl.crt
SSLCertificateKeyFile /etc/apache2/cert/ssl.key
该/etc/apache2/cert/ssl.crt
文件应包含
- 例如 yourdomain.com 的证书
- 第一个中间 CA 的证书,由根 CA 签名(例如 StartCom Class 1 主中间服务器 CA)
- 第二个中间 CA 的证书,由第一个中间 CA 签名(如果您的证书链中有第二个中间 CA)
您需要将所有中间 CA 的证书放入 crt 文件中。根据证书的证书链,涉及的 CA 数量会有所不同。
您甚至不需要添加根 CA,因为它必须位于任何客户端的信任存储中,否则客户端将收到错误页面,此外,如果您将其添加到链中,它只会增加建立 SSL 连接的额外开销,因为它必须在每个新的 SSL 会话中传输。实际上,大多数客户端也会安装中间 CA 证书,但有些可能没有,例如手机没有很多中间 CA 证书,所以我肯定会添加这些证书。
该/etc/apache2/cert/ssl.key
文件将保持不变,也就是说,它将包含 yourdomain.com 证书的密钥
答案2
好的,最近终于明白了,并决定在答案表中发布详细信息。
现在,当您检索证书时,StartSSL 会将其放入 zip 存档中,其中包含大量存档,其中一个特别有趣的是ApacheServer.zip
,它是 Apache >2.4 兼容的格式。Apache 文件夹中的文件包括:
1_root_bundle.crt
2_myhost.tld.crt
您必须SSLCertificateFile
使用这两个证书进行酿造,但请按照以下顺序进行:
cat 2_myhost.tld.crt 1_root_bundle.crt > myhost.tld_combined.crt
因此在站点配置中它将只是:
SSLCertificateFile /etc/apache2/cert/myhost.tld_combined.crt
SSLCertificateKeyFile /etc/apache2/cert/myhost.tld.key
一切都会好起来,甚至Qualys SSL 测试。
这适用于 StartCom StartSSL,也适用于 WoSign 证书。格式相同。