Избегать предупреждения SSL когда сертификат выдается только для корневого домена [дубликат]

У меня возникла следующая проблема при попытке настроить сертификат SSL. При открытии имени корневого домена example.com в браузере отображается зеленый значок, и все в порядке. Однако при попытке открыть с www-версией www.example.com я вижу следующее сообщение

www.example.com использует недопустимый сертификат безопасности.

Сертификат действителен только для example.com

(Код ошибки: ssl_error_bad_cert_domain)

Из этого сообщения я предполагаю, что SSL был выпущен только для example.com (пожалуйста, поправьте меня, если я ошибаюсь), сейчас кроме покупки другого сертификата, который будет включать обе версии, есть ли другой способ избежать этого предупреждения, а именно перенаправить весь трафик на example.com , прежде чем даже "показать" браузеру сертификат? Таким образом, когда пользователь вводит https://www.example.com , он перенаправляет на https://example.com , где сертификат уже действителен.

У меня есть это в файле моего сайта

<VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com
        Redirect / https://example.com/
</VirtualHost>

<VirtualHost *:443>
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /home/username/www/example

        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/example.com.crt
        SSLCertificateKeyFile /etc/apache2/ssl/example.com.private.key
        SSLCertificateChainFile /etc/apache2/ssl/example.com.intermediate.crt
</VirtualHost>

Я пытался установить условие перенаправления внутри VH, но это не помогло.

RewriteCond %{HTTP_HOST} ^www.example.com
RewriteRule ^/(.*)$ https://example.com/$1 [L,R=301]

Apache 2.2.22, Debian 7.9

Спасибо

0
задан 2 January 2016 в 23:29
2 ответа

Нет. Протокол TLS (и его устаревший предшественник, SSL) проверяет сертификат в соответствии с хостовой частью URL, в данном случае с полным доменным именем, до того, как будут переданы какие-либо данные. Это по своей конструкции и отвечает нескольким требованиям безопасности.

Вы должны получить сертификат (он не называется "SSL"), выданный для обоих ваших доменных имен; функция, используемая для этого, называется subjectAlternativeName или SAN. Иногда вы также можете получить подстановочный сертификат, который включает в себя как *.example.com, так и example.com.

.
4
ответ дан 4 December 2019 в 11:16

Во-первых, большинство сертификатов должно уже поставляться с www. Я не слышал о таком, который выпускается только для корневого домена. TLS на самом деле проверяет весь URL, а не только корневой домен, поэтому сертификат для корневого домена, без WWW, будет недействительным, если он используется для WWW домена. Также существуют Wildcard и EV сертификаты, но они гораздо дороже.

Что касается SSL-сертификатов, вы не задумывались над тем, чтобы использовать Let's Encrypt вместо того, чтобы покупать сертификат полностью? Let's Encrypt позволяет бесплатно выдавать несколько сертификатов для любого количества поддоменов (до 100).

2
ответ дан 4 December 2019 в 11:16

Теги

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