“伺服器應該支援 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 存取。

我不太確定它會導致拒絕啟動,但是...

相關內容