Desativar SSL em um bloco do servidor nginx ouvindo na porta 443

1

É possível configurar um servidor que, enquanto escuta na porta 443, NÃO o utiliza?

Algo assim:

server {
  listen 443;
  server_name  _;
  ssl off;
  return 444;
}

O problema com o código acima é que o nginx está forçando SSL neste bloco (ignorando ssl off ) e falha em certificados perdidos.

Algumas pessoas podem se perguntar por quê ??, mas, por favor, considerem isso uma questão acadêmica minha:)

    
por Leonidas A 05.09.2015 / 11:44

1 resposta

1

RFC 2818 afirma que a separação de portas entre HTTP / HTTPS vem do fato de os primeiros dados enviados é diferente, pois o HTTPS inicia a sessão TLS antes de enviar o HTTP por ele.

Não há como o servidor entender você se você não estiver falando o protocolo correto.

Além disso, o RFC 7230 , atualizando o anterior, declara:

TCP port 443 is the default if the port subcomponent is empty or not given, and the user agent MUST ensure that its connection to the origin server is secured through the use of strong encryption, end-to-end, prior to sending the first HTTP request.

Ter o conteúdo codificado antes da transmissão para a porta TCP 443 é, portanto, um requisito por RFC. Você não pode vencê-lo.

A razão para o requisito é uma imposição da separação de camadas OSI, sendo TLS (SSL) no 5º e HTTP no 7º. Não há como eles se entenderem. Isso é refletido nos softwares, onde o processamento dessas partes geralmente é feito por diferentes partes de código (o nginx manipula o HTTP, mas adia o TLS para uma biblioteca externa com a qual ele foi vinculado).

    
por 04.05.2016 / 21:04

Tags