Eu tenho vários hosts virtuais baseados em IP aos quais desejo adicionar o Strict-Transport-Security
cabeçalho. Estou usando o Apache 2.4 personalizado compilado.
Atualmente tenho dois <VirtualHost>
containers para cada domínio, assim:
<VirtualHost ${IP3}:80>
...
<IfModule rewrite_module>
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.${SITE}%{REQUEST_URI} [NE,R=301,L]
</IfModule>
...
</VirtualHost>
<VirtualHost ${IP3}:443>
...
</VirtualHost>
O primeiro VirtualHost faz um mod_rewrite simples para solicitações não-ssl e não-www redirecionando todas as solicitações para o segundo VirtualHost. Fácil.
Questão 1
Devo configurar minhas coisas mod_headers no primeiro contêiner VirtualHost (:80), no segundo (:443) ou em ambos?
Questão 2
Meu material mod_headers deve vir antes ou depois do material mod_rewrite?
Questão 3
Devo aplicar os Strict-Transport-Security
cabeçalhos a todos os arquivos ou apenas aos arquivos .htm, .html e .php? (Eu tenho uma diretiva FilesMatch configurada como um qualificador para certos cabeçalhos)
Minhas melhores respostas
Antes de qualquer teste, minhas melhores respostas seriam:
Q1. Adicione o material mod_headers a ambos os contêineres VirtualHost.
Q2. O material mod_headers deve vir antes do material mod_rewrite.
Q3. Sim, apenas os tipos de arquivo da Web que você atende precisam do Strict-Transport-Security
. Não é necessário adicioná-lo a .gifs, .pngs, .svgs, .css, .js etc.
EDIT: Vejo que o stackexchange também os adiciona ao arquivo robots.txt.
Obrigado.
Vou postar uma resposta temporariamente e se alguém aparecer e me corrigir, marcarei sua resposta como correta.
Q1. Definitivamente, defina
Strict-Transport-Security
cabeçalhos em :80 e :443 VirtualHosts.Q2. Definitivamente, adicione os cabeçalhos antes de qualquer regra de redirecionamento mod_rewrite.
Q3. Estou um pouco menos certo sobre esta resposta.
Alguns sites usam ativos SSL e não SSL (css, js, imagens), mas meus sites apenas veiculam conteúdo por SSL.
Então a resposta é: depende da sua configuração e do que você quer. Não há mal nenhum em adicionar o cabeçalho a css, js, imagens, etc. E, inversamente, não há mal nenhum em não adicioná-lo a esses tipos de arquivo.