SNI

June 8, 2021
O Server Name Indication é uma extensão do protocolo de criptografia TLS. O SNI permite que um dispositivo cliente indique o nome de domínio ao qual tenta se conectar no primeiro estágio do handshake TLS, que compreende o estabelecimento de uma conexão HTTPS segura, incluindo a autenticação do certificado TLS e a geração da chave de criptografia. Isso ajuda a evitar erros de incompatibilidade de nomes.

Problema

Às vezes, vários sites estão localizados em um servidor, têm o mesmo endereço IP, mas cada um deles tem seu próprio certificado SSL. Nesses casos, um servidor pode não saber qual dos certificados deve usar quando um dispositivo cliente tenta se conectar a um site. O motivo é que o handshake SSL/TLS ocorre antes de um dispositivo cliente enviar uma mensagem via HTTP informando a qual site ele tenta se conectar. Isso pode resultar no chamado “erro de incompatibilidade de nome comum”. Isso significa que um cliente se conecta ao endereço IP correto, mas o nome comum no certificado SSL não corresponde ao nome do domínio.

Solução

A SNI participa do handshake do TLS/SSL e ajuda os clientes a ver o certificado SSL correto para a origem à qual tentam se conectar. A SNI adiciona o nome de domínio durante o handshake TLS para que o processo TLS alcance o nome de domínio correto e obtenha o certificado SSL correto, permitindo que o restante do handshake TLS prossiga normalmente. Em particular, a SNI introduz o nome do host na mensagem Client Hello, que é a primeira etapa do handshake TLS. Assim, a SNI permite que os clientes abram uma conexão segura com um site, mesmo que muitos outros recursos tenham o mesmo endereço IP.

A SNI foi adicionada como uma extensão do TLS/SSL em 2003 e, inicialmente, não fazia parte do protocolo. Quase todos os navegadores, sistemas operacionais e servidores da Web são compatíveis com a SNI. Se você usar uma versão muito antiga do navegador ou um sistema operacional móvel como o BlackBerry, provavelmente não conseguirá acessar determinados sites e o navegador enviará uma mensagem de erro “Sua conexão não é privada”.

(English) We use cookies to optimize site functionality and give you the best possible experience. To learn more about the cookies we use, please visit our Cookies Policy. By clicking ‘Okay’, you agree to our use of cookies. Learn more.