Redirecionar https para outro https

28

Pesquisei no Google essa questão e, ironicamente, irritantemente não consigo encontrar uma resposta concreta. Eu já respondi a essa pergunta no passado e agora não consigo me lembrar da minha própria explicação.

Várias vezes por ano, alguém me pede para fazer isso. Eu gostaria de apontá-los para algum tipo de artigo respeitável que explica isso.

Desejo usar o URL em https://www.example.com/ e redirecionar o tráfego para https://www.example2.com/ .

Eu acredito que isso deveria ser tecnicamente possível, mas é indesejável. O que há de errado com esse método? Os navegadores receberão um pop-up de segurança desde que eu os redirecione para outro site? Alguém pode fornecer um link para alguma documentação respeitável que explica isso?

Stefan Lasiewski
fonte
4
Sua situação pode ser irritante, mas não é irônico;)
Gareth

Respostas:

17

Você pode fazer isso, os dois sites precisam ter um certificado SSL válido. Dessa forma, os navegadores não exibirão um pop-up de segurança. Se os dois sites existirem no mesmo servidor, no entanto, os dois domínios precisarão ser hospedados em endereços IP diferentes.

Um servidor da web examina o cabeçalho "Host" na solicitação HTTP para ver em qual site ele precisa servir. A negociação SSL ocorre antes que a solicitação HTTP seja enviada; nesse momento, o servidor da Web não pode dizer qual site será exibido. Ele sempre envia o mesmo certificado para o navegador.

Existem duas maneiras de contornar isso:

  • Tenha um certificado curinga para * .example.com, para que todos os subdomínios possam compartilhar o mesmo certificado.
  • Execute cada site SSL em um endereço IP diferente. Dessa forma, o servidor da Web sabe qual certificado SSL pode enviar ao navegador, inspecionando o endereço IP que recebeu a conexão de entrada.

Observe que é perfeitamente possível conectar vários endereços IP ao mesmo adaptador de rede, é necessário que você precise de um segundo endereço IP disponível no seu espaço de endereço IP.

Atualização: Atualmente, você pode executar vários sites SSL em um único IP. Para habilitar isso, configure o suporte SNI no seu servidor web. A maioria dos navegadores modernos (exceto Windows XP e Android 2) é compatível com isso.

vdboor
fonte
1
Você também pode hospedar vários sites SSL ao mesmo IP sob um Certificado Unified Communication (UCC), consulte help.godaddy.com/article/3908
ManiacZX
Uma outra solução alternativa para o problema de vários hosts / um certificado de IP é usar números de porta alternativos. Isso não é o ideal, pois alguns firewalls / pontos de acesso público bloqueiam o tráfego não 80/443.
Bryan Agee
5

Eu nunca tentei isso, por isso não falo por experiência concreta, mas deve funcionar. Você precisará ter um certificado SSL válido para https://www.example.com, pois o nome do host é criptografado dentro do cabeçalho HTTP, para que o servidor não saiba redirecionar até que seja descriptografado. Depois disso, ele deve redirecionar como faria com uma solicitação HTTP normal.

James L
fonte
2

Por que isso seria indesejável?

Como exemplo, o Big Bank e o Little Bank executam sites em https para oferecer aos clientes uma sensação segura e feliz. O Big Bank compra o Little Bank. Em algum momento, o pessoal de TI configurará um redirecionamento para https://www.littlebank.com para https://www.bigbank.com . Esse é um motivo legítimo para redirecionar de https para https.

Isso deve funcionar bem.

Doug Harris
fonte
Esse cenário que você descreveu seria bom, no entanto, se você navegasse para www.littlebank.com e fosse redirecionado para www.bigbank.com com o endereço real mascarado, de modo que o navegador ainda mostre www.littlebank.com, isso não é bom coisa. Isso é bastante comum em sites não seguros, onde é irrelevante, mas certamente você pode ver os perigos inerentes a se exibir como um site seguro que na verdade não é.
Charles
1

A única desconexão que acho que está presente nas respostas atuais que podem surgir para você é que, em qualquer uma dessas circunstâncias, um redirecionamento verdadeiro (por exemplo: o navegador é redirecionado para www.example2.com) será bom, mas se você mascarar isso de tal forma que o navegador stillthinks está colocado na www.example.com quando na realidade você enviou-o para www.example2.com, este é o lugar onde você vai ver os avisos de segurança precisamente porque você poderia estar tentando falsificar o usuário.

A versão curta é um redirecionamento normal, deve ser bom, mascarar o endereço provavelmente deixará muitas explicações a serem feitas.

Charles
fonte
Obrigado Charles. Essa deve ser a situação "indesejada" em que eu estava pensando.
precisa saber é o seguinte
0

Como vê-lo, esse problema pode ser resolvido em uma camada de transporte. Digamos que você tenha um registro DNS A, por exemplo.com, apontando para 192.168.0.1. Quando você digita https://example.com em um navegador, seu PC estabelece uma conexão TCP com um servidor com IP 192.168.0.1, onde algum processo escuta na porta 443. E se ao mesmo tempo o servidor (que não está tentando entrar em detalhes dos dados enviados por esta sessão TCP, como iniciar a negociação SSL), estabelece uma conexão TCP para 192.168.0.2 (outro servidor com DNS Um exemplo2.com apontando para ele. A utilidade do proxy proxy HA instalada no primeiro servidor pode resolver isso com uma configuração assim:

defaults
        log    global
        mode    tcp
        retries 2
        option redispatch
        option tcplog
        option tcpka
        option clitcpka
        option srvtcpka
        timeout connect 5s      
        timeout client  24h     #timeout client->haproxy(frontend)
        timeout server  60m

listen front443 192.168.0.1:443
    server back443 192.168.0.2:443

Mas isso causará erro de certificado SSL, a menos que o servidor da web example2.com mostre um certificado SSL com CN = example2.com e SAN = example.com, por exemplo.

Ou você pode configurar um horizonte de slpit DNS quando os usuários consultivos example.com e example2.com resolverem para 192.168.0.1.

Alexey Smirnov
fonte