Если я наберу 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 - но думаю, это не имеет значения.
Если вы не используете шаблонный сертификат, ваш сертификат должен включать оба имени в поле Альтернативное имя субъекта . Если вы используете 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
Как @Froggiz упомянул, ваш сертификат SSL, вероятно, действителен только для одного из URI
Предполагая, что ваш SSL-сертификат предназначен только для субдомена www, вам, вероятно, лучше всего использовать Apache для перезаписи запросов для TLD без www в субдомен www:
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^(domain\.com)
RewriteRule ^(.)*$ https://www.%1/$1 [R,L]
Хотя это не совсем ответ на ваш вопрос, он предоставляет обходной путь, который устраняет проблему