É possível obter um certificado curinga e usar o SNI?

4

Gostaria de facilitar a configuração de novos subdomínios (pelo menos para o desenvolvimento) e obter um certificado curinga, configurar um dns curinga (que é feito e funciona muito bem) e configurar o SNI (Server Name Indication) Parece que funcionaria para nossos testes HTTPS, mas pesquisando no Google não encontrei nenhuma boa instrução. Isso é possível? Tudo o que li sobre o SNI diz que você precisa configurar um certificado para cada site e que o SNI apenas possibilita a entrega de um certificado diferente, dependendo do nome do host.

    
por Sheldon McGee 26.01.2011 / 01:33

1 resposta

5

Se você tiver um certificado curinga, poderá criar um virtual hospedagem como você faz sem SSL.

Ao negociar uma conexão SSL, seu servidor da Web precisa selecionar um certificado ANTES de quaisquer cabeçalhos de protocolos HTTP terem sido recebidos - o que significa que, sem o SNI, o Apache não pode selecionar entre múltiplos Hosts virtuais baseados em nome. É por isso que no passado você precisava de um endereço IP separado para cada host virtual hospedado em seu sistema. Usando o SNI, o cliente é capaz de fornecer ao servidor o nome de o host ao qual deseja se conectar. Isso permite que o servidor selecione a configuração apropriada do host virtual e, portanto, certificado apropriado.

Se você estiver usando um certificado curinga, você evita esse problema desde que todos os seus hosts virtuais compartilhem um domínio pai comum. Nesse caso, o SNI é desnecessário. Como o certificado é válido para qualquer dos seus hosts, não há requisito de que o seu servidor web seja capaz de identificar os host virtual no início da negociação SSL ... o que significa que você pode usar os cabeçalhos HTTP para identificar o host e prosseguir com as hospedagem virtual baseada em nome.

Usando o Apache, sua configuração seria algo como isto:

NameVirtualHost *:443

<VirtualHost *:443>
    ServerName foo.example.com
    DocumentRoot /sites/foo.example.com/html
    SSLEngine On
    # ...other SSL parameters...
</VirtualHost>

<VirtualHost *:443>
    ServerName bar.example.com
    DocumentRoot /sites/bar.example.com/html
    SSLEngine On
    # ...other SSL parameters...
</VirtualHost>

Estamos executando esse tipo de configuração em uma situação de produção há alguns anos sem problemas.

    
por 26.01.2011 / 01:58