Apache已弃用的SSLCertificateChainFile指令(AH02559)

最近我已经将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指令指定,但我不知道什么键和顺序我应该连接到这个文件。

鉴于你在你的apacheconfiguration中使用这个:

 SSLCertificateFile /etc/apache2/cert/ssl.crt SSLCertificateKeyFile /etc/apache2/cert/ssl.key 

/etc/apache2/cert/ssl.crt文件应该包含

  1. 如yourdomain.com的证书
  2. 第一个中间CA的证书,由根CA签名(例如,StartCom Class 1主中间服务器CA)
  3. 第二个中间CA的证书,由第一个中间CA签名(如果证书链中有第二个中间CA)

您需要将所有中间CA的证书放在crt文件中。 根据您的证书的证书链,将有不同数量的CA。

您甚至不需要添加根CA,因为它必须位于任何客户端的信任存储区中,否则客户端将获得错误页面,而且,如果将其添加到您的链中,它将只是额外的开销build立SSL连接,因为每个新的SSL会话都必须传输。 实际上大多数客户端也会安装中间的CA证书,但有些可能不会,例如手机没有很多中间的CA证书,所以我肯定会加上这些证书。

/etc/apache2/cert/ssl.key文件将保持不变,即它将包含yourdomain.com证书的密钥

好的,最后最后想出来,决定在答案中发布详细信息。

现在,当您检索到证书时,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 

所以在网站conf它将只是:

  SSLCertificateFile /etc/apache2/cert/myhost.tld_combined.crt SSLCertificateKeyFile /etc/apache2/cert/myhost.tld.key 

一切都会好起来的,即使是Qualys的SSLtesting 。

这适用于StartCom StartSSL以及WoSign证书。 格式是一样的。