У меня есть директивы VirtualHost в файлах конфигурации веб-сервера в следующем формате:
<VirtualHost *:443>
ServerName example.com
Ввод https://example.com
в браузер отображает сайт правильно, трафик зашифрован TLS. Как только я переписываю его на
<VirtualHost example.com:443>
Запуск запроса GET к домену через порт 443 приводит к ошибке SSL, а именно NET :: ERR_CERT_COMMON_NAME_INVALID
в Chrome, где говорится, что веб-сервер предоставил сертификат, который действительно для example.net
(этот другой домен все еще размещен на моем сервере).
Если я загляну в сертификат ( openssl x509 -in cert.pem -text
), я пойму, что он выдан для
Subject: CN=example.com
Путь к сертификату настроен правильно.
Дополнительная информация : Оба домена разрешаются к одному и тому же 127.0.0.1 в файле hosts, NameVirtualHost не установлен, и перед веб-сервером есть прокси-сервер, который, надеюсь, не имеет никакого отношения к этой проблеме.
Аргумент к директиве VirtualHost должен совпадать с определенной директивой NameVirtualHost.
Нельзя использовать домен domain.com в директиве VirtualHost, если у вас нет домена NameVirtualHost. com, определенного в config, что является чем-то не очень распространенным, * или IP обычно используется для NameVirtualHost.
Так как этот VirtualHost недействителен, он загружает первый или по умолчанию VirtualHost, который существует на этом IP для порта 443, который является anotherdomain.com, чей SSL обслуживает вас.
.У меня была эта проблема, у меня ранее было мое приложение во внутреннем домене QA с это собственный сертификат.
Когда домен был обновлен до постоянного, я хотел настроить правила перенаправления со старого на новый.
Исправление для меня состояло в том, чтобы определить сертификаты QA SSL на виртуальных хостах перед перенаправлением:
#QA VHost
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/qa/server.crt
SSLCertificateKeyFile /etc/ssl/certs/qa/server.key
SSLCACertificateFile /etc/ssl/certs/qa/rsaca.crt
ServerName qa.internaldomain.com
Redirect / https://production.com/
</VirtualHost>
А затем определить производственный SSL на соответствующем виртуальном хосте
# Prod VHost
<VirtualHost *:443>
ServerName production.com
DocumentRoot /http/production
SSLEngine on
SSLCertificateFile /etc/ssl/certs/production/server.crt
SSLCertificateKeyFile /etc/ssl/certs/production/server.key
SSLCACertificateFile /etc/ssl/certs/production/rsaca.crt
# other vhost configs ...
</VirtualHost>
Очевидно, это работает, только если у вас есть действительный сертификат для перенаправление домена, я думаю, вы всегда можете использовать службу, такую как certbot, если у вас ее нет.