Como redirecionar o pedido HTTP na porta HTTPS?

0

Em uma simples instalação do Tomcat 7 com HTTPS, enviando uma solicitação HTTP no HTTPS port retorna uma resposta estranha de três caracteres de controle:

$ wget -q -S -O - http://127.0.0.1:8443/
^U^C^@

[Eu usei a combinação caret-char porque não posso colar o original.]

Se possível, quero alterá-lo para redirecionar para https ou retornar 404 ou algum outro comportamento personalizado. Isso é possível?

    
por Miserable Variable 14.08.2013 / 23:47

1 resposta

0

O envio de HTTP na porta dedicada HTTPS não é esperado normalmente, embora seja possível. Na prática, a produção está rodando em 80 e 443 portas, então isso não é realmente um problema a menos que alguém esteja "hackeando". Caso sejam usadas portas diferentes (por exemplo, padrão do Tomcat), o problema pode surgir apenas porque as pessoas se esquecerão de digitar "https" na frente da URL.

Em qualquer caso, o comportamento padrão é retornar HTTP 400 Bad Request . Isso é feito, por exemplo. pelo servidor da web Apache.

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Reason: You're speaking plain HTTP to an SSL-enabled server port.<br />
Instead use the HTTPS scheme to access this URL, please.<br />
</p>
</body></html>

O conector HTTP TLS / SSL do Tomcat não faz isso obviamente, e suspeito que ele responda com alguma mensagem de erro de handshake TLS (discutido parcialmente aqui link ).

Na produção, o SSL geralmente é encerrado no servidor proxy reverso (como o Apache), que manipula até mesmo uma solicitação tão ruim (como descrito acima).

    
por 15.08.2013 / 01:52

Tags