Weird http - https redirection embora não configurado

2

Estou executando o Apache 2.2.15 (CentOS 6.6) com um domínio somente HTTP

demo.xml-director.info

Usando o wget, posso recuperar o conteúdo corretamente

 wget -S http://demo.xml-director.info
--2015-01-05 13:31:41--  http://demo.xml-director.info/
Resolving demo.xml-director.info (demo.xml-director.info)... 176.9.146.28
Connecting to demo.xml-director.info (demo.xml-director.info)|176.9.146.28|:80... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 200 OK
  Date: Mon, 05 Jan 2015 12:31:41 GMT
  Server: Zope/(2.13.22, python 2.7.6, linux2) ZServer/1.1
  Content-Length: 20227
  Expires: Sat, 01 Jan 2000 00:00:00 GMT
  Content-Type: text/html;charset=utf-8
  X-Ua-Compatible: IE=edge,chrome=1
  Content-Language: en
  Vary: Accept-Encoding
  Keep-Alive: timeout=15, max=100
  Connection: Keep-Alive
Length: 20227 (20K) [text/html]
Saving to: 'index.html.4'

No entanto, o Chrome / Firefox sempre altera a solicitação de http para https por causa da HTST. No entanto, para este domínio em particular, não há configuração de HSTS.

O servidor executa SSL para www.xml-director.info com suporte HSTS ativado. No entanto, há mais alias aqui que mapeariam o demo.xml-director.info para www.xml-director.info.

Como esse problema pode ser resolvido?

VHOst para www.xml-director.info:

<VirtualHost *:443>
    ServerName www.xml-director.info
    ServerAlias xml-director.info

    SSLEngine on
    SSLCertificateFile /etc/httpd/certs/15742445repl_2.crt
    SSLCertificateCHainFile /etc/httpd/certs/15742445repl_2.ca-bundle
    SSLCertificateKeyFile /etc/httpd/certs/zopyx.com.key

    CustomLog /var/log/httpd/xml-director.info.log combined
    DocumentRoot /var/www/xml-director/landing-v1

    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"

    <location "/">
        Options +Indexes
        Header set Access-Control-Allow-Origin "*"
        Header set Access-Control-Allow-Methods "GET,PUT,POST,DELETE"
    Header set Access-Control-Allow-Headers "X-Requested-With,Content-Type"
    </location>

</VirtualHost>

<VirtualHost *:80>
    ServerAlias www.xml-director.com 
    ServerAlias www.xml-director.info
    ServerAlias www.xml-director.de
    ServerAlias xml-director.com
    ServerAlias xml-director.info
    ServerAlias xml-director.de

    RedirectPermanent / https://xml-director.info/
</VirtualHost>

e para demo.xml-director.info

<VirtualHost *:80>
    ServerName  demo.xml-director.info
    RewriteEngine On

    RewriteRule ^/(.*) http://127.0.0.1:12020/VirtualHostBase/http/demo.xml-director.info:80/xml-director/VirtualHostRoot/$1 [L,P]
    RewriteRule ^/$    http://127.0.0.1:12020/VirtualHostBase/http/demo.xml-director.info:80/xml-director/VirtualHostRoot/$1 [L,P]

    CustomLog /var/log/httpd/demo.xml-director.info.log combined
    AddOutputFilterByType DEFLATE text/html text/xml text/plain text/css text/javascript

    CacheRoot /tmp/cache
    CacheEnable disk /
    CacheIgnoreCacheControl on

    KeepAliveTimeout 15
    KeepAlive on

    ExpiresActive On
    ExpiresByType image/gif "access plus 10 day"
    ExpiresByType image/jpg "access plus 10 day"
    ExpiresByType image/jpeg "access plus 10 day"
    ExpiresByType image/png "access plus 10 day"
    ExpiresByType text/javascript "access plus 10 day"
    ExpiresByType text/html  "access plus 1 hour"
    ExpiresByType text/html  "access plus 1 hour"
    ExpiresByType text/css  "access plus 10 days"

    <Location "/">
        Order allow,deny
        Allow from all
    </Location>

</VirtualHost>
    
por Mareike Hassler 05.01.2015 / 13:39

1 resposta

5

Segurança de Transporte Estrito - includeSubdomains

O problema é o escopo do cabeçalho HSTS, ele inclui todos os subdomínios. Se acessar http://demo.xml-director.info com um navegador primeiro , tudo funcionará bem.

No entanto, após o primeiro acesso a https://xml-director.info/ ou https://www.xml-director.info , o navegador receberá um cabeçalho HSTS para todos os subdomínios configurados para expirar no futuro (em dois anos ...?) e, portanto, não tentará conectar-se a qualquer (sub) domínio sobre http novamente até o cabeçalho expirar.

Por acaso, este cabeçalho não tem efeito nas ferramentas cli, como wget e curl .

Não inclua subdomínios

Se houver algum subdomínio que deve ser acessado por http - não use includeSubdomains . Em vez disso, se você quiser usar o cabeçalho HSTS, restrinja-o somente ao domínio acessado (que é o comportamento padrão):

<VirtualHost *:443>
    ServerName www.xml-director.info
    ServerAlias xml-director.info

    Header always set Strict-Transport-Security "max-age=63072000"

Corrigindo cabeçalhos HSTS indesejados

Um navegador que recebeu um cabeçalho de HSTS não tem como limpá-lo por si próprio, ele sempre tentar acessar o domínio por meio de https , o que, se não houver resposta, significa que ele está preso no limbo.

Para corrigir a situação atual dos navegadores existentes (supondo que não seja um problema "apenas eu"), é necessário expirar o cabeçalho HSTS através de uma conexão https. ou seja:

<VirtualHost *:443>
    ServerName *.xml-director.info

    Header always set Strict-Transport-Security "max-age=0"
    RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI}

Ou equivalente. Desta forma, o cabeçalho HSTS é limpo e o acesso http é restaurado.

    
por 05.01.2015 / 13:47