Como configurar o SSL no IIS 7 ou em versões mais recentes
por Saad Ladki
Introdução
As etapas de configuração do protocolo SSL para um site são as mesmas no IIS 6.0, no IIS 7 e em versões mais recentes e incluem o seguinte:
- Obtenha um certificado apropriado.
- Crie uma associação HTTPS em um site.
- Faça um teste realizando uma solicitação para o site.
- Também é possível configurar as opções de SSL, tornando o SSL um requisito.
Este documento fornece algumas informações básicas sobre o SSL e mostra como ativá-lo usando os seguintes recursos:
- O Gerenciador do IIS.
- A ferramenta de linha de comando AppCmd.exe.
- O Microsoft.Web.Administration, de modo programático.
- Scripts de WMI.
Este artigo inclui as seções a seguir:
Configuração de SSL
É extremamente importante e comum usar o SSL para proteger sites, sejam eles executados em um servidor próprio ou na nuvem, a fim de proteger a privacidade dos usuários. Se você precisa configurar o SSL no seu servidor, é importante notar que a implementação dele mudou do IIS 6.0 para o IIS 7 e as versões mais recentes. No IIS 6.0 no Windows Server 2003, toda a configuração do SSL era armazenada na metabase do IIS e a criptografia/descriptografia ocorria no modo de usuário, exigindo muitas transições entre os modos kernel e de usuário. No IIS 7 e nas versões mais recentes, HTTP.sys lida com a criptografia/descriptografia do SSL no modo kernel, o que resulta em desempenho até 20% melhor para conexões seguras no IIS 7 e em desempenho superior ao padrão no IIS 6.0.
Para usar o SSL no modo kernel, você precisa armazenar as informações de associação SSL em dois locais. Primeiro, ela deve ser armazenada no %windir%\System32\inetsrv\config\applicationHost.config do site. Quando o site é iniciado, o IIS envia a associação ao HTTP.sys e ele começa a escutar solicitações no IP e na porta especificados, o que funciona para todas as associações. Em seguida, a configuração do SSL vinculada à associação deve ser armazenada na configuração do HTTP.sys. Use o comando netsh em um prompt de comando para exibir a configuração de associação SSL armazenada em HTTP.sys, como neste exemplo:
netsh http show sslcert
Quando um cliente se conecta e inicia uma negociação de SSL, o HTTP.sys procura na configuração do SSL o par IP/porta conectado a ele. Para que a negociação de SSL ocorra, a configuração do SSL no HTTP.sys deve incluir um hash de certificado e o nome do repositório de certificados.
Dica de solução de problemas: em caso de problemas com uma associação SSL, verifique se ela está configurada em ApplicationHost.config e se o repositório de HTTP.sys contém um hash de certificado e um nome de repositório válidos relacionados a ela.
Como escolher um certificado
Considere o seguinte ao escolher um certificado: você deseja que os usuários finais possam verificar a identidade do servidor com ele? Em caso afirmativo, crie uma solicitação de certificado e a envie a uma AC (autoridade de certificação) conhecida, como o VeriSign ou o GeoTrust, ou consiga um certificado com uma AC online no seu domínio de intranet. Em geral, um navegador verifica as três seguintes informações em um certificado do servidor:
- A data e hora atuais estão dentro do intervalo de datas "Válido de" e "Válido até" no certificado.
- o "Common Name" (CN) do certificado corresponde ao cabeçalho de host na solicitação. Por exemplo, se o cliente estiver fazendo uma solicitação para
https://www.contoso.com/
, o CN deverá serwww.contoso.com
. - Se o emissor do certificado é uma AC conhecida e confiável.
Quando uma ou mais dessas verificações falham, o navegador avisa o usuário. No caso de sites da Internet ou da intranet em que os usuários finais não são pessoas que você conhece pessoalmente, é importante sempre garantir a validade desses três parâmetros.
Certificados autoassinados são aqueles criados no seu computador. Eles são úteis em ambientes em que o usuário final não precisa confiar no servidor, como em um ambiente de teste.
Como usar o AppCmd
Não é possível solicitar ou criar um certificado usando o AppCmd.exe. Também não é possível usá-lo para criar uma associação SSL.
Definir as configurações do SSL
É possível usar o AppCmd.exe para modificar o atributo sslFlags na seção “Acesso” de um site a fim de configurá-lo para aceitar apenas conexões HTTPS do servidor. Por exemplo, você pode definir essa configuração para o "Site Padrão" no arquivo ApplicationHost.config (por exemplo, commitPath:APPHOST) com o seguinte comando:
%windir%\system32\inetsrv>AppCmd set config "Default Web Site" -commitPath:APPHOST -section:access -sslFlags:Ssl
Se o comando for executado corretamente, a seguinte mensagem será exibida:
Applied configuration changes to section "system.webServer/security/access" for "MACHINE/WEBROOT/APPHOST/Default Web Site" at configuration commit path "MACHINE/WEBROOT/APPHOST"
Observação
Para exigir o SSL de 128 bits, altere o valor de sslFlags para Ssl128.
O exemplo a seguir mostra como exibir as configurações da seção <access/> para o “Site Padrão”. O atributo sslFlags foi definido corretamente.
%windir%\system32\inetsrv>AppCmd list config "Default Web Site" -section:access
A execução do comando resulta na seguinte entrada no arquivo ApplicationHost.config:
<system.webServer>
<security>
<access flags="Script, Read" sslFlags="Ssl" />
</security>
</system.webServer>
Como usar o WMI
Não é possível solicitar ou criar um certificado usando o namespace de WMI WebAdministration.
Criar uma associação SSL
O seguinte script mostra como criar uma associação SSL e como adicionar a configuração apropriada para o HTTP.sys e o IIS:
Set oIIS = GetObject("winmgmts:root\WebAdministration")
'''''''''''''''''''''''''''''''''''''''''''''
' CREATE SSL BINDING
'''''''''''''''''''''''''''''''''''''''''''''
oIIS.Get("SSLBinding").Create _
"*", 443, "4dc67e0ca1d9ac7dd4efb3daaeb15d708c9184f8", "MY"
'''''''''''''''''''''''''''''''''''''''''''''
' ADD SSL BINDING TO SITE
'''''''''''''''''''''''''''''''''''''''''''''
Set oBinding = oIIS.Get("BindingElement").SpawnInstance_
oBinding.BindingInformation = "*:443:"
oBinding.Protocol = "https"
Set oSite = oIIS.Get("Site.Name='Default Web Site'")
arrBindings = oSite.Bindings
ReDim Preserve arrBindings(UBound(arrBindings) + 1)
Set arrBindings(UBound(arrBindings)) = oBinding
oSite.Bindings = arrBindings
Set oPath = oSite.Put_
Observação
O hash de certificado e o repositório devem fazer referência a um certificado real e funcional no servidor. Se o hash do certificado e/ou o nome do repositório forem inválidos, um erro será retornado.
Definir as configurações do SSL
O script a seguir mostra como definir as configurações do SSL usando o provedor WMI do IIS. É possível encontrar esse valor no arquivo IIS_Schema.xml.
CONST SSL = 8
Set oIIS = GetObject("winmgmts:root\WebAdministration")
Set oSection = oIIS.Get(\_
"AccessSection.Path='MACHINE/WEBROOT/APPHOST',Location='Default Web Site'")
oSection.SslFlags = oSection.SslFlags OR SSL
oSection.Put\_ <a id="IISManager"></a>
Gerenciador do IIS
obter um certificado
Selecione o nó de servidor no modo de exibição de árvore e clique duas vezes no recurso Certificados do servidor no modo de exibição de lista:
No painel Ações, clique em Criar certificado autoassinado....
Insira um nome amigável para o novo certificado e clique em OK.
Agora você tem um certificado autoassinado. Ele é marcado para uso na "Autenticação do servidor", o que significa que ele é usado como um certificado do servidor para a criptografia SSL HTTP e para a autenticação da identidade do servidor.
Criar uma associação SSL
Selecione um site no modo de exibição de árvore e clique em Associações... no painel Ações. O editor de associações é aberto e permite criar, editar e excluir as associações do site. Clique em Adicionar... para adicionar a nova associação SSL ao site.
As configurações padrão de uma nova associação são definidas como HTTP na porta 80. Selecione HTTPS na lista de seleção Tipo. Selecione o certificado autoassinado que você criou na seção anterior na lista suspensa Certificado SSL e clique em OK.
Agora você tem uma nova associação SSL no site e basta apenas verificar se ela funciona.
Verificar a associação SSL
No painel Ações, em “Procurar site”, clique no link vinculado à associação que você acabou de criar.
O IE (Internet Explorer) 7 e as versões mais recentes exibem uma página de erro porque o certificado autoassinado foi emitido pelo seu computador, não por uma AC (autoridade de certificação) confiável. Eles confiam no certificado quando ele é adicionado à lista de Autoridades de Certificação Raiz Confiáveis no repositório de certificados do computador local ou na Política de Grupo do domínio.
Clique em Continuar neste site (não recomendado).
Definir as configurações do SSL
Defina as configurações do SSL para que o site exija SSL ou interaja de maneira específica com os certificados de cliente. Clique no nó do site no modo de exibição de árvore para voltar à página inicial do site. Clique duas vezes no recurso Configurações de SSL no painel central.
Resumo
Ao seguir as etapas deste documento, você usou a ferramenta de linha de comando AppCmd.exe, o WMI do provedor de scripts e o Gerenciador do IIS para configurar o SSL no IIS.