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.
내가 시도한 것:
- virtualhost 구문과 인증서 및 키 경로를 다시 확인했습니다.
- 이중 확인된 인증서는 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에서 non으로 리디렉션할 수 있습니다 .
답변2
이전 답변에서 언급되지 않은 확인해야 할 사항이 하나 더 있습니다.
전역 구성(기본적으로 VirtualHost 및 유사한 블록 외부의 모든 위치)에 "SSLEngine on"이 있고 전역적으로 정의된 SSLCertificateFile 지시문이 없는 경우 아파치는 가상 호스트에 도달하기도 전에 이에 대해 질식하고 사용자는 이 오류가 발생합니다.
오류 메시지는 실제로 정확하지만 WHICH 서버에 인증서가 없다는 내용은 언급되어 있지 않습니다.
답변3
첫 번째 가상 호스트(www.domain.tld용)에는 포트 443에 있음에도 불구하고 SSL이 활성화되어 있지 않습니다.
두 번째 항목과 같이 SSLEngine, SSLCertificateFile 등을 추가해야 합니다. 그렇지 않으면 www.domain.tld에 대해 https 액세스가 불가능합니다.
그러나 이것이 단호한 거부를 유발해야 하는지는 잘 모르겠습니다.