Existe uma maneira de acessar 'mod_rewrite' antes de 'mod_ssl'?

4

Cenário:

Eu tenho dois domínios: thinkingmonkey.me & %código%. Todo o site é acessado em thinkingmonkey.com . Comprou um certificado de uma CA com nome comum https .

Para thinkingmonkey.me :

  • www.thinkingmonkey.com, thinkingmonkey.com & www.thinkingmonkey.me have a single virtual host and get redirected to https://thinkingmonkey.me using _mod_rewrite_ rules.

  • thinkingmonkey.me has its separate virtualhost.

  • Everything works fine.

O mesmo é o caso de http :

  • i.e. www.thinkingmonkey.com, thinkingmonkey.com & www.thinkingmonkey.com have a single virtual host and get redirected to https://thinkingmonkey.me using _mod_rewrite_ rules.

  • thinkingmonkey.me has its separate virtualhost.

The Problem

  • Now, if https://www.thinkingmonkey.com or https://thinkingmonkey.com is accessed,
    • mod_ssl acts and a TLS Handshake occurs before mod_rewrite does the rewrite to https://thinkingmonkey.me.
    • Since the common name in the certificate is under thinkingmonkey.me, This Connection is Untrusted warning get show at the browser.
    • Unless I complete the handshake by accepting the certificate, It will not get redirected to thinkingmonkey.me. Which is very annoying.

Então,
Existe uma maneira de acessar https antes de mod_rewrite ?
ou
Eu tenho que comprar um certificado separado para me livrar disso?

    
por ThinkingMonkey 16.02.2012 / 21:34

2 respostas

7

Não, HTTPS é HTTP sobre TLS / SSL (consulte RFC 2818 ), que primeiro estabelece a conexão SSL / TLS antes que qualquer tráfego HTTP seja enviado. mod_rewrite será sempre aplicado depois que a conexão SSL / TLS for estabelecida.

Não fazer isso seria realmente um problema de segurança, já que um invasor poderia reescrever e redirecionar o cliente antes que o certificado fosse verificado. Mesmo que a atualização do TLS estivesse dentro do HTTP ( RFC 2817 , que praticamente nunca é usado / suportado e não é https ) , você ainda deseja que o redirecionamento venha de uma entidade confiável.

A maneira de contornar isso é usar um certificado com várias entradas DNS de SAN (Subject Alternative Name), uma para cada nome de host ou vários certificados (caso em que você pode precisar de um endereço IP por certificado também, a menos que você esteja disposto a usar Indicação do nome do servidor ).

    
por 16.02.2012 / 21:48
2

Não, não há como fazer isso. Considere a obtenção de um certificado SAN que inclua ambos os nomes. Se você obtiver 2 certs, precisará de 2 endereços IP.

    
por 16.02.2012 / 21:37