Solicitar que o Nginx rejeite nomes de servidores desconhecidos por HTTPS

8

Eu tenho uma instância Nginx usando o SNI para servir vários domínios HTTPS a partir de um único IP.

A única falha com a configuração é que o Nginx responde com o primeiro domínio (atuando como padrão) sempre que uma URL para o IP simples do servidor ou um domínio listado nesse IP para o qual não há bloco de servidor HTTPS correspondente, é requerido. Nesse caso, eu preferiria simplesmente retornar um padrão 403 Forbidden - eu configuraria um bloco de servidor padrão para fazer isso, mas não vejo uma maneira de contornar os avisos de incompatibilidade de certificado do cliente.

(Como c | C) e configuro o Nginx para rejeitar solicitações para domínios desconhecidos / indefinidos sem a necessidade de especificar um determinado certificado ssl que prejudique os navegadores? (isto é, eu preciso que o Nginx rejeite o pedido com um 403 antes de perturbar o cliente com um certificado "ruim" - do POV do cliente, isso deve ser idêntico ao caso em que nenhum bloco de servidor HTTPS é definido.)

    
por Carlton Gibson 21.01.2011 / 15:55

2 respostas

6

Esta pergunta é muito parecida com a que eu respondi ontem: nginx e SNI: é possível resolver automaticamente o certificado SSL por nome de domínio

Não é possível rejeitar a conexão antes que o usuário veja uma mensagem de certificado inválida em seu navegador. No momento em que o Nginx pode retornar uma resposta HTTP 403, o handshake SSL acabou e, para concluir o handshake, o navegador deve aceitar o certificado fornecido. Você só pode rejeitar a conexão depois que o usuário aceitou o certificado configurando um servidor padrão:

server {
    listen 433 default_server ssl;
    ssl_certificate       common.crt;
    ssl_certificate_key   common.key;
    return 403;
}

No entanto, os navegadores mais recentes suportam Indicação do Nome do Servidor e, se você tiver um conjunto de certificados para cada vhost, é muito improvável que um usuário normal veja essa mensagem.

Pode ser possível rejeitar conexões sem nome de host válido indicado pelo SSL com o iptables, mas isso provavelmente é bastante complicado e não estaria de acordo com nenhum padrão.

Informações atualizadas: É possível que return 444 cancele a conexão tcp imediatamente antes que um erro de certificado seja exibido.

    
por 12.02.2014 / 16:40
0

Se os seus domínios forem subdomínios do mesmo mestre (* .example.com), você poderá usar um certificado curinga. Caso contrário, não creio que você possa fornecer qualquer certificado com o qual o navegador fique satisfeito.

    
por 21.01.2011 / 17:04

Tags