Seleção de certificado SSL com base no cabeçalho do host: é possível?


17

É possível que um servidor Web selecione um certificado SSL para usar com base no cabeçalho do host da conexão de entrada ou essas informações estão disponíveis apenas após o estabelecimento da conexão SSL?

Isto é, pode o meu servidor web listado na porta 443 e utilizar o certificado foo.com se https://foo.com é solicitada, bem como o certificado bar.com se https://bar.com é solicitada ou estou tentando fazer algo impossível porque o servidor precisa estabelecer uma conexão SSL antes de saber o que o cliente deseja?

Respostas:


23

Historicamente, sua primeira declaração é precisa. Agora, existem várias opções:

  • Um certificado curinga se subdomínios dentro do mesmo domínio.
  • Um certificado SAN / UCC para especificar nomes alternativos para o certificado, podendo servir vários certificados.
  • O SNI foi introduzido para estabelecer a conexão SSL após o cabeçalho Host. Isso tem suporte limitado, no entanto, pois é mais recente.

Isso foi respondido várias vezes no ServerFault por mim e por outros. Sugiro procurar mais detalhes, a menos que você tenha uma pergunta específica.


4
Fui procurar e não consegui encontrar nada; essa é provavelmente uma daquelas coisas que somente é fácil de pesquisar se você souber a resposta para incluí-la nos termos de pesquisa. Obrigado.
DrStalker

3
Se houver respostas existentes no ServerFault, seria bom criar links para elas.
precisa

serverfault.com/search , @organicveggie.
Warner

3
O SNI não estabelece a conexão SSL após o cabeçalho Host, mas inclui o nome do host no handshake SSL. Não que isso importe se você não é um desenvolvedor de SSL.
Bart van Heukelom 16/03/12

Pesquisando Serverfault fornece isso como resposta. Isso significa que canonicamente quaisquer outras perguntas são duplicadas desta. Esse link que você incluiu não tem resultados.
Ian Boyd


3

Resposta curta: não

O HTTP é encapsulado dentro do SSL , portanto, qualquer informação sobre a solicitação fica inacessível até que a conexão seja estabelecida. Portanto, até que um certificado seja entregue ao cliente. Não há como usar cabeçalhos nem outras informações criptografadas, pois elas ainda não estão disponíveis.

EDIT: isso é verdade se você deseja hoje em dia ser um navegador cruzado e totalmente portátil. Como já foi dito por outros, existem novos métodos emergentes que tornam possível no futuro próximo.


1

ou essas informações estão disponíveis somente após o estabelecimento da conexão SSL?

Corrigir. A conexão SSL é estabelecida antes que qualquer parte da solicitação HTTP (cabeçalho do host incluído) seja enviada.


2
Isso não é mais totalmente preciso.
Warner
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.