Servername Secure Connection - Loose Match

Мы обновили нашу конфигурацию развертывания Apache, чтобы разрешить запросы без www к нашему серверу ( https://example.com ). Для https-соединений нам это было нужно, потому что имя не соответствовало сертификату. Это было хорошо, хотя недавно мы заметили, что наши безопасные среды локального развертывания ( https://chris.example.com ) также указывают на это новое развертывание. Мы закомментировали новое развертывание, чтобы подтвердить, что это изменение вызвало его, и так оно и было. Мы предположили, что это было из установленного нами параметра servername . Вот наши начальные настройки:

NameVirtualHost example.com:443
<VirtualHost example.com:443>
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/html/www.example.com
    ServerName example.com
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
    SSLProtocol all
    SSLCertificateFile /usr/local/ssl/crt/example2017.cert
    SSLCertificateKeyFile /usr/local/ssl/private/ssl2017.key
    SSLCACertificateFile /usr/local/ssl/crt/example2017intermediate.pem
    DirectoryIndex index.html
    DirectoryIndex index.php
    LogLevel notice
    ErrorLog /var/log/httpd/www.example.com/error.log
    LogFormat "%{%Y-%m-%d %H:%M:%S}t %a %u %A %p %m %U %q %>s \"%{User-agent}i\"" w3c_extended
    CustomLog /var/log/httpd/www.example.com/access.log w3c_extended
</VirtualHost>

После того, как комментирование сработало, мы предположили, что это ServerName не соответствует действительности, и мы читаем следующее на сайте Apache:

Иногда сервер работает за устройством который обрабатывает SSL, например обратный прокси, балансировщик нагрузки или устройство разгрузки SSL. В этом случае укажите схему https: // и номер порта, к которому подключаются клиенты, в директиве ServerName, чтобы убедиться, что сервер генерирует правильные самореферентные URL-адреса.

- http: / /httpd.apache.org/docs/2.2/mod/core.html#servername

Итак, мы обновили запись servername на:

ServerName https://example.com:443

, это разрешило главную страницу ( https: //пример. com ) для загрузки и перенаправления, но среды разработки ( https://chris.example.com ) снова загружались из него. Первоначально я рассматривал возможность использования явного стартового правила:

ServerName ^example.com

, но я не могу найти нигде, говорящего, что имя сервера принимает регулярное выражение. Есть ли способ сделать это, или у меня неправильный путь, и проблема в другом?

Вот результат httpd -S :

VirtualHost configuration:
192.168.0.0:443     is a NameVirtualHost
         default server example.com (/etc/httpd/conf/httpd.conf:1065)
         port 443 namevhost example.com (/etc/httpd/conf/httpd.conf:1065)
wildcard NameVirtualHosts and _default_ servers:
*:443                  is a NameVirtualHost
         default server *.example.com (/etc/httpd/conf.d/ssl.conf:74)
         port 443 namevhost *.example.com (/etc/httpd/conf.d/ssl.conf:74)
         port 443 namevhost www.example.com (/etc/httpd/conf/httpd.conf:1046)
         port 443 namevhost chris.example.com (/etc/httpd/conf/httpd.conf:1096)
         port 443 namevhost dan.example.com (/etc/httpd/conf/httpd.conf:1129)
         port 443 namevhost rich.example.com (/etc/httpd/conf/httpd.conf:1159)
         port 443 namevhost rich2.example.com (/etc/httpd/conf/httpd.conf:1189)
         port 443 namevhost danny12.example.com (/etc/httpd/conf/httpd.conf:1219)
         port 443 namevhost nick.example.com (/etc/httpd/conf/httpd.conf:1249)
         port 443 namevhost cdn.example.com (/etc/httpd/conf/httpd.conf:1300)
         port 443 namevhost origin_server.example.com (/etc/httpd/conf/httpd.conf:1316)
*:80                   is a NameVirtualHost
         default server www.example.com (/etc/httpd/conf/httpd.conf:1034)
         port 80 namevhost www.example.com (/etc/httpd/conf/httpd.conf:1034)
         port 80 namevhost dfw.example.com (/etc/httpd/conf/httpd.conf:1084)
         port 80 namevhost chris.example.com (/etc/httpd/conf/httpd.conf:1114)
         port 80 namevhost dan.example.com (/etc/httpd/conf/httpd.conf:1147)
         port 80 namevhost rich.example.com (/etc/httpd/conf/httpd.conf:1177)
         port 80 namevhost rich2.example.com (/etc/httpd/conf/httpd.conf:1207)
         port 80 namevhost danny12.example.com (/etc/httpd/conf/httpd.conf:1237)
         port 80 namevhost nick.example.com (/etc/httpd/conf/httpd.conf:1267)
         port 80 namevhost origin_server.example.com (/etc/httpd/conf/httpd.conf:1279)
         port 80 namevhost cdn.example.com (/etc/httpd/conf/httpd.conf:1290)
Syntax OK

Новое развертывание началось в строке 1064 и закончилось в 1081.

2
задан 13 March 2017 в 21:18
1 ответ

После более тщательного исследования в чате выяснилось, что было два утверждения NameBasedVirtualHost, одно для *:443 и другое для примера . com:443, в первом случае все поддомены VirtualHost, а во втором только одно для самого example.com.

Сделав его единым с одним NameBasedVirtualHost *:443, а также все поддомены и основной домен, ссылающиеся на него, исправили проблему.

.
2
ответ дан 3 December 2019 в 11:29

Теги

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