Indicação de Nome de Servidor (SNI) do IIS 8.0: Escalabilidade do SSL

por Shaun Eagan

Compatibilidade

Versão Observações
IIS 8.0 A Indicação de Nome de Servidor foi introduzida no IIS 8.0.
IIS 7.5 Não havia suporte para a Indicação de Nome de Servidor no IIS 7.5.
IIS 7.0 Não havia suporte para a Indicação de Nome de Servidor no IIS 7.0.

Problema

À medida que mais sites de comércio eletrônico entram em operação e mais empresas armazenam e compartilham documentos confidenciais online, a capacidade de hospedar e dimensionar sites seguros é cada vez mais importante. Antes do Windows Server 2012, havia alguns desafios quando se tratava de hospedar sites seguros:

  • Escalabilidade de SSL: em um ambiente multilocatário, como uma hospedagem compartilhada, há uma limitação quanto ao número de sites seguros que podem ser hospedados no Windows Server, resultando em uma baixa densidade de sites.
  • Escassez de IPv4: como o ponto de extremidade da rede só pode ser identificado com a associação IP:Porta, em que os locatários solicitam o uso da porta SSL padrão, 443, hospedar um site seguro geralmente significa oferecer um endereço IP dedicado por locatário.

Solução

No Windows Server 2012, o IIS dá suporte à Indicação de Nome de Servidor (SNI), que é uma extensão TLS para incluir um domínio virtual como parte da negociação SSL. O que isso significa efetivamente é que o nome do domínio virtual, ou um nome de host, agora pode ser usado para identificar o ponto de extremidade da rede. Além disso, um armazenamento WebHosting altamente escalonável foi criado para complementar a SNI. O resultado é que a densidade de sites seguros é muito maior no Windows Server 2012 e isso é obtido com apenas um endereço IP.

Deve-se observar que, para que esse recurso possa ser usado, os navegadores de seus clientes precisam dar suporte à SNI. A maioria dos navegadores modernos é compatível com SNI; no entanto, o Internet Explorer (de qualquer versão) no Windows XP não dá suporte para SNI.

Instruções passo a passo

Pré-requisitos:

  • O IIS 8.0 está instalado no Windows Server 2012.

    • Tanto o repositório de certificados do WebHosting quanto a SNI fazem parte da instalação padrão do IIS. Não há nenhum recurso específico do IIS que precise ser instalado a partir do Gerenciador do Servidor.
  • Exemplos de certificados.

  • \windows\system32\drivers\etc\hosts foi modificado para ser usado no site e no certificado de amostra. Por exemplo, se o nome CN do certificado for TAPTesting, o arquivo hosts deverá conter:

    127.0.0.1 TAPTesting
    

Soluções alternativas para bugs conhecidos:

Há casos extremos em que o Gerenciador do IIS pode remover a vinculação SSL não intencional quando há vinculações SSL tradicionais (IP:Porta) e vinculações SNI (Nome do host:Porta) configuradas no mesmo computador. Para contornar esse problema e/ou confirmar as associações SSL reais, use a ferramenta de linha de comando:

netsh http show sslcert

Importar certificados para o Repositório de Hospedagem Web:

  1. Abra MMC.
  2. Em Arquivo, selecione Adicionar/Remover Snap-in:
    Screenshot that shows the menu for File in M M C. Add Remove Snap in is highlighted.
  3. Selecione Certificados. Clique em Adicionar:
    Screenshot that shows the Add or Remove Snap ins dialog box with Certificates selected under Available snap ins.
  4. Selecione Conta do computador:
    Screenshot that shows the Certificates snap in dialog box. Computer account is selected.
  5. Selecione Computador local e clique em Concluir:
    Screenshot that shows the Select Computer dialog box. Local computer is selected.
  6. Clique em OK:
    Screenshot that shows the Add or Remove Snap ins.
  7. No painel de navegação, localize o Repositório de Hospedagem Web:
    Screenshot that shows Web Hosting highlighted under the Certificates node.
    O repositório de Hospedagem Web funciona como o repositório Pessoal, de modo que todas as ferramentas existentes para importar e exportar certificados funcionam da mesma forma. A principal diferença entre o repositório de Hospedagem Web e o armazenamento Pessoal é que o repositório de Hospedagem Web foi projetado para ser dimensionado para um número maior de certificados.
  8. Importe seus certificados de amostra para o repositório de Hospedagem Web.

Crie um site seguro:

  1. Abra o Gerenciador do IIS.

  2. Selecione Sites na janela de navegação à esquerda:
    Screenshot that shows I I S Manager. Sites is selected.

  3. Clique com o botão direito do mouse em Sites e selecione Adicionar Site:
    Screenshot that shows the context menu for Sites.

  4. Preencha as informações, como faria para criar qualquer site:

    • Nome do site: Teste

    • Caminho físico: c:\inetpub\wwwroot

    • Tipo: https

    • nome do host: TAPTesting

      • Essa é uma novidade no Windows Server 8, pois o nome do host pode ser especificado para o protocolo SSL.
      • Para evitar erros de incompatibilidade de nome do certificado, certifique-se de que o nome de host especificado aqui corresponda ao nome CN do certificado.
      • O valor real dessa configuração varia de acordo com o certificado de amostra que está sendo usado.
    • Usar a Indicação de Nome de Servidor: selecionado

    • Certificado SSL: escolha o nome do seu certificado; por exemplo: TAPTesting.

      • Observe que os certificados são apresentados nos repositório Pessoal e Hospedagem Web.

      Screenshot that shows the Add Website dialog box.

  5. Verifique se o site foi criado:
    Screenshot that shows Test highlighted under the Sites node.

  6. É isso. O site seguro foi criado usando a SNI. A experiência de gerenciamento é muito semelhante à associação SSL tradicional. As únicas diferenças são:

    • O nome do host pode ser especificado para o site SSL.
    • O certificado é armazenado no repositório de Hospedagem Web para aumentar a escalabilidade.

Testar um site seguro:

Abra um navegador e navegue até https://TAPTesting/. Observe que, como parte do pré-requisito, seu arquivo de hosts deve ter sido modificado para rotear essa solicitação para o localhost:

Screenshot that shows Internet Explorer. I I S 8 is written in large text on the web page.

Além disso, para ver o novo tipo de associação SSL, insira o seguinte em uma janela de linha de comando com privilégios elevados:

netsh http show sslcert

Screenshot that shows a command window. Host name and port are highlighted.

Observe que a associação SSL é nome do host:porta com o valor TAPTesting:443.

Cenários

Tente implantar os seguintes cenários:

  • A SNI foi projetada para ser dimensionada para um ambiente multilocatário. Tente configurar milhares de sites seguros usando a SNI.
  • Diferentemente das versões anteriores do Windows Server, os certificados no Windows Server 2012 são carregados na memória sob demanda. Depois de configurar milhares de sites seguros usando a SNI, envie uma solicitação GET para um dos sites seguros e observe o uso da memória. É insignificante. Nas versões anteriores do Windows Server, se centenas de sites seguros estivessem configurados, o envio de apenas uma solicitação GET faria com que o Windows Server carregasse todos certificados, resultando em um alto uso de memória e limitando ainda mais a escalabilidade.
  • Configure o Windows Server 2012 com sites seguros tanto com SNI quanto no modo tradicional. Eles foram projetados para coexistir.

Resumo

Você explorou com êxito o recurso SNI (Indicação de Nome de Servidor) no Windows Server 2012.