ssl-сертификат не работает для www

Краткое описание: http://example.com правильно перенаправлен на https://example.com и загружается. http://www.example.com не перенаправляется на https://www.example.com .Непосредственная загрузка завершается ошибкой сертификата.

Я установил сертификат SSL с помощью certbot. Когда я запрашиваю у certbot список сертификатов, я получаю:

Found the following certs:
  Certificate Name: example.com-0004
    Domains: example.com www.example.com
    Expiry Date: 2020-05-17 21:13:21+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/example.com-0004/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/example.com-0004/privkey.pem

В моей конфигурации Apache у меня есть:

<VirtualHost *:80>
    ServerName example.com
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,NE,R]
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,NE,R]
</VirtualHost>

<IfModule mod_ssl.c>
    NameVirtualHost *:443
    Include /etc/httpd/conf/httpd-le-ssl.conf
</IfModule>

А в httpd-le-ssl.conf у меня есть:

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerName example.com
        DocumentRoot /var/www/html
        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateFile /etc/letsencrypt/live/example.com-0004/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com-0004/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/example.com-0004/chain.pem
    </VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerName www.example.com
        DocumentRoot /var/www/html
        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateFile /etc/letsencrypt/live/example.com-0004/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com-0004/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/example.com-0004/chain.pem
    </VirtualHost>
</IfModule>

У меня два вопроса. Почему не работает перенаправление на www? Почему сертификат не распознается для www? Chrome сообщает мне:

This server could not prove that it is www.ncprepswimming.com; 
its security certificate is not trusted by your computer's operating system. 
This may be caused by a misconfiguration or an attacker intercepting your connection.

Что не так с моим сертификатом и моей конфигурацией? Результат apachectl -S:

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:443                  is a NameVirtualHost
         default server www.example.com (/etc/httpd/conf.d/ssl.conf:76)
         port 443 namevhost www.example.com (/etc/httpd/conf.d/ssl.conf:76)
         port 443 namevhost example.com (/etc/httpd/conf/httpd-le-ssl.conf:2)
         port 443 namevhost www.example.com (/etc/httpd/conf/httpd-le-ssl.conf:12)
*:80                   is a NameVirtualHost
         default server www.example.com (/etc/httpd/conf/httpd.conf:1006)
         port 80 namevhost www.example.com (/etc/httpd/conf/httpd.conf:1006)
         port 80 namevhost db.example.com (/etc/httpd/conf/httpd.conf:1086)
                 alias www.db.example.com
         port 80 namevhost example.com (/etc/httpd/conf/httpd.conf:1092)
         port 80 namevhost www.example.com (/etc/httpd/conf/httpd.conf:1099)
         port 80 namevhost svn.example.com (/etc/httpd/conf/httpd.conf:1106)
                 alias www.svn.example.com
Syntax OK
0
задан 18 February 2020 в 18:23
1 ответ

Если вы изучите предложенный сертификат, посетив URL-адреса с www и без www, вы увидите, что версия с www не использует один и тот же сертификат. Это должно сказать вам, что у вас, вероятно, где-то есть повторяющаяся / плохая конфигурация, указывающая на неправильный сертификат.

Вывод apachectl -S ясно показывает несколько www.example.com на порт 443 (при условии, что здесь правильная обфускация):

VirtualHost configuration:
         default server www.example.com (/etc/httpd/conf.d/ssl.conf:76)
         port 443 namevhost www.example.com (/etc/httpd/conf.d/ssl.conf:76)
         port 443 namevhost www.example.com (/etc/httpd/conf/httpd-le-ssl.conf:12)

Вам нужно самостоятельно посмотреть конфигурации, чтобы определить, какой из них правильный, а какой нет, но, вероятно, вам просто нужно удалить ssl.conf (или прокомментировать несколько строк) и перезапустите.

0
ответ дан 26 February 2020 в 00:42

Теги

Похожие вопросы