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?

DrStalker
fonte

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.

Warner
fonte
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
5

Para estender a resposta da Warner: A página da CAcert Vhost Task Force compara vários métodos para usar vários domínios em um único servidor. Eu pessoalmente uso a indicação de nome de servidor .

user1686
fonte
Como você lida com usuários do Windows XP, Android, Blackberry, etc?
thomasrutter
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.

drAlberT
fonte
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.

Richard
fonte
2
Isso não é mais totalmente preciso.
Warner