“服务器应该是SSL感知的,但没有configuration证书”

Ubuntu 14.04 Apache 2.4.7 w / mod_ssl

我正在尝试安装(单个)域证书。 出于某种原因,apache不接受它,并拒绝启动,如果相关的网站启用。 尽pipe大量使用Google,但我无法理解错误信息。 为什么说没有configuration证书? 它设置在虚拟主机中,并指向正确位置的crt文件。

error_log中

[Tue May 19 18:11:08.123857 2015] [ssl:emerg] [pid 10040:tid 140146576725888] AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] ((null):0) [Tue May 19 18:11:08.123894 2015] [ssl:emerg] [pid 10040:tid 140146576725888] AH02312: Fatal error initialising mod_ssl, exiting. 

我曾尝试过:

  • 重新检查虚拟主机语法和证书和密钥的path
  • 双重证书是chmoded 644和key是chmoded 600
  • 双重检查证书有效。 从我的提供商redownloaded。 在编辑器中打开它

这是虚拟主机

 <IfModule mod_ssl.c> <VirtualHost *:443> ServerName www.domain.tld RedirectMatch (.*) https://domain.tld$1 </VirtualHost> <VirtualHost _default_:443> ServerAdmin admin@localhost ServerName domain.tld DocumentRoot /home/user/www/domain.tld/public # SSL CERTIFICATES SSLEngine on SSLCertificateFile /etc/ssl/certs/domain.tld.crt SSLCertificateKeyFile /etc/ssl/private/domain.tld.key SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem SSLVerifyClient None # SSLProtocol all -SSLv2 -SSLv3 <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown <Directory /home/user/www/domain.tld/public> Require all granted </Directory> LogLevel error ErrorLog ${APACHE_LOG_DIR}/user-eu-error.log CustomLog ${APACHE_LOG_DIR}/user-eu-access.log combined ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/user/www/domain.tld/public/$1 ErrorDocument 404 /missing.php # Mod_status <location /server-status> SetHandler server-status Order Allow,Deny Allow from all </location> </VirtualHost> </IfModule> 

任何关于什么可能是错误的build议?

我认为eltrai是在正确的道路上,但我会删除第一个<VirtualHost>块,并在第二个ServerAlias

 <VirtualHost _default_:443> ServerAdmin admin@localhost ServerName domain.tld ServerAlias www.domain.tld 

您可以稍后在同一个模块中添加RedirectMatch ,将其从wwwredirect到非。

您的第一个虚拟主机(对于www.domain.tld)没有启用SSL,即使它在端口443上。

您需要添加SSLEngine,SSLCertificateFile,…在第二个,否则没有https访问将可能为www.domain.tld。

我不太确定这是否会导致拒绝开始,但是…

还有一件事要检查,在以前的答案中没有提到。

如果你的全局configuration中的任何地方都有“SSLEngine on”(基本上在VirtualHost和类似块之外的任何地方),并且你还没有一个全局定义的SSLCertificateFile指令,那么apache在它到达虚拟主机之前就会窒息而你会得到这个错误。

错误信息实际上是正确的,但没有提到WHICH服务器没有证书。