2015-07-12 158 views
2

我在Apache 2.4.12上,所以SSLCertificateChainFile现在已经过时,并且任何中间证书都应该包含在服务器证书文件中。但我无法弄清楚如何执行此操作 - 除之外的任何证书组合只有指定文件内的站点证书导致无效的密钥错误。如何在我使用SSLCertificateFile指定的文件中正确包含中间证书?SSLCertificateChainFile已过时

+0

[关于Apache SSLCertificateChainFile弃用警告2.4.8+(http://serverfault.com/q/588986/217116) – sebix

回答

0

对于Apache 2.4.8,SSLCertificateChainFile已被废弃。然而,它只是被弃用,并没有被删除,所以你可能会继续使用旧的风格。但是,对于Apache版本> 2.4.8,SSLCertificateChainFile将不起作用。

SSLCertificateChainFile已被弃用

SSLCertificateChainFile变得过时与2.4.8版本,当 了SSLCertificateFile扩展到还从服务器证书文件加载中间CA证书

https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#SSLCertificateChainFile

旧样式(有效在Apache < = 2.4.8)

#SSL Directives 
SSLEngine on 
SSLCertificateFile /etc/ssl/certs/<mydomain.com>.crt 
SSLCertificateKeyFile /etc/ssl/private/<mydomain.com>.key 
SSLCertificateChainFile /etc/ssl/certs/<full-chain-bundle>.crt 

源:How to Install an SSL Certificate on Apache

新型

#SSL Directives 
SSLEngine on 
SSLCertificateFile /etc/ssl/certs/<full-chain-bundle>.crt 
SSLCertificateKeyFile /etc/ssl/private/<mydomain.com>.key 
(在Apache> = 2.4.8有效)

来源:https://codesport.io/lamp-stack-advanced/lets-encrypt-tutorial/#vhost-config

+0

并没有为我工作。我除去 .CRT然后将错误消息指示的证书和密钥不匹配。 –

+0

我觉得是什么让这个答案有点令人困惑的是,'<全链束> .crt'同时出现在新老配置。如果我没有记错,在旧的配置只有* CA链*似乎由'SSLCertificateChainFile'打电话到文件中,而在新配置CA链应该附加到服务器证书,成*满链*,由'SSLCertificateFile'调用。我试图在我的回答中澄清。 –

0

从Apache 2.4模块mod_ssl文档摘自:

SSLCertificateFile指令

该文件还可以包括中间CA证书,分类从叶根。这在版本2.4.8和更高版本中受支持,并且已废弃SSLCertificateChainFile

这意味着SSLCertificateFile指令现在(2.4.8之后)接受具有完整证书链(从叶到根)的文件。如果您有domain.crt的服务器证书和domain-ca.crt中的CA链文件,则需要将文件从叶子连接到根,即启动您的服务器证书,如

cat domain.crt domain-ca.crt > bundle.crt 

,并使用该文件的网站的conf文件中:(例如,使用Ubuntu的默认路径,这些文件将被存储在/etc/apache2/ssl/

SSLCertificateFile  /path/to/bundle.crt