Servername Conexão segura - correspondência fraca

2

Atualizamos nossa configuração de implantação do Apache para permitir solicitações que não sejam do www em nosso servidor ( https://example.com ). Para conexões https, precisávamos disso porque o nome não correspondia ao certificado. Isso foi bom, embora recentemente tenhamos notado que nossos ambientes seguros de implantações locais ( https://chris.example.com ) também estão apontando para essa nova implantação. Comentamos a nova implantação para confirmar que essa foi a mudança que causou e foi. Presumimos que isso fosse da configuração servername que definimos. Aqui estão as nossas configurações iniciais:

NameVirtualHost example.com:443
<VirtualHost example.com:443>
    ServerAdmin [email protected]
    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>

Depois que os comentários terminaram, assumimos que era ServerName uma correspondência fraca e lemos o seguinte no site do Apache:

Sometimes, the server runs behind a device that processes SSL, such as a reverse proxy, load balancer or SSL offload appliance. When this is the case, specify the https:// scheme and the port number to which the clients connect in the ServerName directive to make sure that the server generates the correct self-referential URLs.

- link

Por isso, atualizamos a servername da entrada para:

ServerName https://example.com:443

isso permitiu que a página principal ( https://example.com ) ainda fosse carregada e redirecionada, mas os ambientes de desenvolvimento ( https://chris.example.com ) estavam novamente sendo carregados dela. Eu estava originalmente pensando em tentar uma regra inicial explícita:

ServerName ^example.com

mas não consigo encontrar em lugar nenhum dizendo que servername aceita regex. Existe uma maneira de fazer isso, ou eu sou o dono do caminho errado e o problema está em outro lugar?

Aqui está a httpd -S output:

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

A nova implantação começou na linha 1064 e terminou em 1081.

    
por chris85 07.03.2017 / 21:13

1 resposta

2

Após uma investigação mais detalhada no bate-papo, parece que havia duas % declaraçõesNameBasedVirtualHost, uma para *:443 e outra para example.com:443 , com a primeira tendo todos os subdomínios VirtualHost declarações e o último tendo apenas um para example.com .

Tornar uniforme com uma declaração NameBasedVirtualHost *:443 e todos os subdomínios e domínio principal que se referem a ele corrigiram o problema.

    
por 13.03.2017 / 11:08