O que é SNI?
Hosts virtuais permitem que vários nomes de domínio compartilhem um único endereço IP, o que ajuda a resolver a escassez de endereços IPv4. O servidor encaminha solicitações para diferentes nomes de domínio (hosts virtuais) com base no host da requisição do cliente.
Essa arquitetura gera problemas para servidores HTTPS que hospedam múltiplos domínios em um mesmo endereço IP. Antes da conclusão do handshake TLS, o servidor desconhece o nome de domínio solicitado pelo cliente e não consegue apresentar o certificado correto para o host virtual de destino.
O Server Name Indication (SNI) resolve essa questão ao exigir que o cliente especifique o nome de domínio de destino durante o handshake TLS. Assim, o servidor seleciona o certificado adequado para concluir o handshake e estabelecer a conexão TLS.
Proposto inicialmente em 2004, o SNI conta hoje com suporte da maioria dos navegadores modernos, servidores e ferramentas de teste.
Por que o Anti-DDoS Proxy e o Web Application Firewall exigem suporte a SNI nos clientes?
O Anti-DDoS Proxy e o Web Application Firewall (WAF) funcionam como proxies reversos para serviços HTTPS. Ao configurar a proteção HTTPS, envie um certificado e uma chave privada. Como a quantidade de endereços IP do Anti-DDoS Proxy e de servidores WAF é limitada, os clusters de serviço hospedam vários nomes de domínio nos mesmos servidores. Portanto, os clientes precisam oferecer suporte a SNI para interagir corretamente com o Anti-DDoS Proxy e o WAF.
Se um navegador sem suporte a SNI acessar um site protegido pelo Anti-DDoS Proxy ou WAF, o serviço não identificará o nome de domínio solicitado. Nesse cenário, o sistema recorre a um certificado padrão interno, o que faz o navegador exibir um aviso de "certificado de servidor não confiável".
Mesmo que o servidor real possua apenas um nome de domínio e não compartilhe o endereço IP, o cliente ainda precisa ter suporte a SNI, pois o Anti-DDoS Proxy ou o WAF atua como proxy reverso. Estabeleça a conexão primeiramente com o Anti-DDoS Proxy ou o WAF.
Soluções
Server-side
Configure seu servidor para oferecer suporte a SNI.
Client-side
Se seus clientes não oferecem suporte a SNI, adote uma das soluções abaixo:
Recomende aos usuários a migração para um navegador moderno, como Google Chrome ou Firefox.
-
Não configure a proteção de site na Camada 7 no serviço Anti-DDoS Proxy. Em vez disso, configure a proteção do site usando encaminhamento de porta da Camada 4.
NotaA proteção de porta da Camada 4 não defende contra ataques CC.
SNI compatibility
O SNI é compatível com TLS 1.1 e versões posteriores, mas não funciona com o protocolo SSL.
-
Navegadores desktop compatíveis:
Chrome 5 e superior
Chrome 6 e superior
Firefox 2 e superior
Internet Explorer 7 e superior (apenas no Windows Vista, Windows Server 2008 e sistemas operacionais posteriores. Nenhuma versão do Internet Explorer no Windows XP oferece suporte a SNI.)
Konqueror 4.7 e superior
Opera 8 e superior
Safari 3.0 e superior (apenas no Windows Vista, Windows Server 2008 e posteriores, ou no Mac OS X 10.5.6 e superiores.)
-
Navegadores móveis compatíveis:
Android 3.0 Honeycomb e superior
iOS 4 e superior
Windows Phone 7 e superior
-
Servidores compatíveis:
Apache 2.2.12 e superior
Apache Traffic Server 3.2.0 e superior
Cherokee
HAProxy 1.5 e superior
IIS 8.0 e superior
Lighttpd 1.4.24 e superior
LiteSpeed 4.1 e superior
Nginx 0.5.32 e superior
-
Ferramentas de linha de comando compatíveis:
cURL 7.18.1 e superior
wget 1,14 e superior
-
Bibliotecas compatíveis:
GNU TLS
JSSE (Oracle Java) 7 e superior (apenas como cliente)
libcurl 7.18.1 e superior
NSS 3.1.1 e superior
OpenSSL 0.9.8j e superior
OpenSSL 0.9.8f e superior (requer configuração de flag)
Qt 4.8 e superior