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 存取。
我不太確定它會導致拒絕啟動,但是...