"서버는 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.

내가 시도한 것:

  • 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 액세스가 불가능합니다.

그러나 이것이 단호한 거부를 유발해야 하는지는 잘 모르겠습니다.

관련 정보