SSL-сертификат без www не работает [закрыто]

Если я наберу https://www.example.com , сайт будет работать. Если я наберу https://example.com , сайт не будет работать. Сертификат должен поддерживать example.com, а также www.example.com. У меня есть сертификат European-SSL (самый дешевый).

Кратко:

https://www.example.com --> working
https://example.com --> not working

Что не так с конфигурацией apache2.4.7?

<VirtualHost *:80>
DocumentRoot "/var/www/domain/live/web"

ServerAdmin hostmaster@example.de
ServerName www.example.de
DirectoryIndex app.php
<Directory "/var/www/domain/live/web">
     Options Indexes FollowSymlinks
     AllowOverride All
     Require all granted
</Directory>
</VirtualHost>

<IfModule mod_ssl.c>
   <VirtualHost _default_:443>

            DocumentRoot "/var/www/example/live/web"
            ServerAdmin hostmaster@example.com
            ServerName www.example.com
            ServerAlias example.com
            DirectoryIndex app.php

            <Directory "/var/www/domain/live/web">
                    Options Indexes FollowSymlinks
                    AllowOverride All
                    Require all granted
            </Directory>

            ErrorLog /var/log/apache2/error_log
            CustomLog /var/log/apache2/access_log combined
            SSLEngine on
            SSLCertificateFile      /etc/apache2/ssl-certs/example.com.crt
            SSLCertificateKeyFile /etc/apache2/ssl-certs/example.key
            SSLCertificateChainFile /etc/apache2/ssl-certs/example.com.ca
            SSLProtocol All -SSLv2 -SSLv3
            SSLHonorCipherOrder On
            SSLCompression off
   </VirtualHost>

PS: Я использую symfony2.7 - но думаю, это не имеет значения.

0
задан 25 November 2015 в 15:14
2 ответа

Если вы не используете шаблонный сертификат, ваш сертификат должен включать оба имени в поле Альтернативное имя субъекта . Если вы используете OpenSSL, это можно проверить, запустив:

openssl x509 -in /etc/apache2/ssl-certs/domain.com.crt -noout -text |
     grep -A1 "Subject Alternative"

Это должно напечатать вывод, аналогичный:

        X509v3 Subject Alternative Name:
            DNS:domain.com, DNS:www.domain.com

Если ваше программное обеспечение SSL / TLS не поддерживает расширение альтернативного имени субъекта (подойдет большинство современных программ), единственное имя, для которого сертификат будет действителен, - это Common Name (CN) , указанное в поле сертификата Subject . Это можно увидеть, запустив:

openssl x509 -in /etc/apache2/ssl-certs/domain.com.crt -noout -text | grep Subject:

Если сертификат является сертификатом с подстановочными знаками, это будет отображать выходные данные, аналогичные:

    Subject: OU=Domain Control Validated, CN=*.domain.com
2
ответ дан 4 December 2019 в 13:45

Как @Froggiz упомянул, ваш сертификат SSL, вероятно, действителен только для одного из URI

Предполагая, что ваш SSL-сертификат предназначен только для субдомена www, вам, вероятно, лучше всего использовать Apache для перезаписи запросов для TLD без www в субдомен www:

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^(domain\.com)
RewriteRule ^(.)*$ https://www.%1/$1 [R,L]

Хотя это не совсем ответ на ваш вопрос, он предоставляет обходной путь, который устраняет проблему

0
ответ дан 4 December 2019 в 13:45

Теги

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