Виртуальные хосты на основе имени вызывают NET :: ERR_CERT_COMMON_NAME_INVALID

У меня есть директивы 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 не установлен, и перед веб-сервером есть прокси-сервер, который, надеюсь, не имеет никакого отношения к этой проблеме.

1
задан 30 December 2016 в 15:00
2 ответа

Аргумент к директиве VirtualHost должен совпадать с определенной директивой NameVirtualHost.

Нельзя использовать домен domain.com в директиве VirtualHost, если у вас нет домена NameVirtualHost. com, определенного в config, что является чем-то не очень распространенным, * или IP обычно используется для NameVirtualHost.

Так как этот VirtualHost недействителен, он загружает первый или по умолчанию VirtualHost, который существует на этом IP для порта 443, который является anotherdomain.com, чей SSL обслуживает вас.

.
2
ответ дан 3 December 2019 в 20:31

У меня была эта проблема, у меня ранее было мое приложение во внутреннем домене 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, если у вас ее нет.

0
ответ дан 19 August 2021 в 13:55

Теги

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