“服务器应该支持 SSL,但尚未配置证书”

“服务器应该支持 SSL,但尚未配置证书”

Ubuntu 14.04 Apache 2.4.7(带 mod_ssl)

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

错误日志

[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.

我已尝试过:

  • 仔细检查虚拟主机语法以及证书和密钥的路径
  • 经过双重检查的证书的 chmoded 为 644,密钥的 chmoded 为 600
  • 再次检查证书是否有效。从我的提供商处重新下载。在编辑器中打开它

这是虚拟主机

<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>

对于可能出现的问题有什么建议吗?

答案1

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

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

您可以RedirectMatch在同一个块中添加稍后的内容,以从 www 重定向到非。

答案2

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

如果您的全局配置中的任何地方(基本上是 VirtualHost 和类似块之外的任何地方)有“SSLEngine on”,并且您没有全局定义 SSLCertificateFile 指令,那么 apache 会在到达虚拟主机之前就阻塞,并且您将收到此错误。

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

答案3

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

您需要添加 SSLEngine、SSLCertificateFile 等,如第二个所示,否则 www.domain.tld 将无法进行 https 访问。

然而,我不太确定它是否会导致断然拒绝开始......

相关内容