«Сервер должен поддерживать 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 на non.

решение2

Еще одна вещь, которую следует проверить и которая не была упомянута в предыдущих ответах.

Если где-либо в вашей глобальной конфигурации включено «SSLEngine» (в основном за пределами VirtualHost и подобных блоков) и у вас нет директивы SSLCertificateFile, также определенной глобально, Apache заблокирует ее еще до того, как она дойдет до виртуального хоста, и вы получите эту ошибку.

Сообщение об ошибке на самом деле верное, но в нем не указано, КАКОЙ сервер не имеет сертификата.

решение3

На вашем первом виртуальном хосте (для www.domain.tld) ​​не включен SSL, хотя он находится на порту 443.

Вам необходимо добавить SSLEngine, SSLCertificateFile, ... как во втором случае, в противном случае доступ по https для www.domain.tld будет невозможен.

Однако я не уверен, что это должно вызвать полный отказ от запуска...

Связанный контент