Apache 已弃用的 SSLCertificateChainFile 指令 (AH02559)

Neu*_*ter 8 ssl ssl-certificate apache-2.2 apache-2.4

最近我将 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
Run Code Online (Sandbox Code Playgroud)

我目前的设置:

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
Run Code Online (Sandbox Code Playgroud)

该证书由 StartCOM 签署。手册说,现在整个链应该在一个文件中,由SSLCertificateFile指令指定,但我不知道我应该连接到这个文件的键和顺序。

fho*_*zer 8

鉴于您在 apache 配置中使用它:

SSLCertificateFile    /etc/apache2/cert/ssl.crt
SSLCertificateKeyFile /etc/apache2/cert/ssl.key
Run Code Online (Sandbox Code Playgroud)

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

  1. 例如 yourdomain.com 的证书
  2. 第一个中间 CA 的证书,由根 CA 签名(例如StartCom Class 1 Primary Intermediate Server CA)
  3. 第二个中间 CA 的证书,由第一个中间 CA 签名(如果您的证书链中有第二个中间 CA)

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

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

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

  • 我想,对于新手来说,构建链条并非易事。我通常运行 `openssl x509 -subject -issuer -noout -in certificate.of.yourdomain.crt` 来查看颁发者。然后我从我的 CA 的网站下载颁发证书,在你的情况下:http://www.startssl.com/certs/。然后在该证书上运行命令。重复直到 issue 等于 subject,这意味着证书是自签名的,并且是根 CA 证书。将除根 CA 证书以外的所有文件添加到 ssl.crt 中,然后您就完成了。 (2认同)