Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: Serviços de Informações da Internet
Visão geral
Este artigo ajuda você a solucionar problemas de SSL (Secure Sockets Layer) relacionados apenas aos Serviços de Informações da Internet (IIS). Ele abrange certificados de servidor usados para autenticação de servidor, não certificados de cliente.
Se a seção Certificados do cliente estiver definida como Exigir e você encontrar problemas, este artigo não será o que você deve consultar. Este artigo destina-se apenas à solução de problemas de certificados do servidor SSL.
É importante saber que todo certificado compreende uma chave pública (usada para criptografia) e uma chave privada (usada para descriptografia). A chave privada é conhecida apenas pelo servidor.
A porta padrão para HTTPS é 443. Supõe-se que você seja bem versado no Handshake SSL e no processo de autenticação do servidor durante o handshake SSL.
Ferramentas usadas nesta solução de problemas
As ferramentas usadas para solucionar problemas nos vários cenários são:
- Monitor de Rede 3.4
- Wireshark
Cenários
Você vê a seguinte mensagem de erro ao navegar em um site por HTTPS:
O primeiro pré-requisito que deve ser verificado é se o site pode ser acessado por HTTP. Se não for, provavelmente há um problema separado que não é abordado neste artigo. Antes de usar este solucionador de problemas, você deve ter o site operacional em HTTP.
Agora, vamos supor que o site esteja acessível por HTTP e a mensagem de erro anterior seja mostrada quando você tentar navegar por HTTPS. A mensagem de erro é mostrada porque o handshake SSL falhou. Pode haver muitos motivos detalhados nos próximos cenários.
Cenário 1
Verifique se o certificado do servidor tem a chave privada correspondente a ele. Consulte a seguinte captura de tela da caixa de diálogo Certificado:
Solução
Se a chave privada estiver ausente, você precisará obter um certificado que contenha a chave privada, que é essencialmente um arquivo . PFX . Aqui está um comando que você pode tentar executar para associar a chave privada ao certificado:
C:\>certutil - repairstore my "906c9825e56a13f1017ea40eca770df4c24cb735"
Se a associação for bem-sucedida, você verá a seguinte janela:
Neste exemplo, 906c9825e56a13f1017ea40eca770df4c24cb735 é a impressão digital do certificado. Para obter a impressão digital, siga estas etapas:
- Abra o certificado.
- Selecione a guia Detalhes.
- Role para baixo para encontrar a seção de impressão digital.
- Selecione a seção de impressão digital e selecione o texto abaixo dela.
- Faça um Ctrl+A e depois Ctrl+C para selecioná-lo e copiá-lo.
Observação
O certutil comando nem sempre pode ser bem-sucedido. Se isso falhar, você precisará obter um certificado contendo a chave privada da autoridade de certificação (CA).
Cenário 2
Nesse cenário, considere que você tem um certificado de servidor que contém a chave privada instalada no site. No entanto, você continua a ver o erro mostrado no cenário 1. Você ainda não pode acessar o site por HTTPS.
Solução
Se você tiver um certificado que contém a chave privada, mas não puder acessar o site, também poderá ver o seguinte aviso SChannel nos logs de eventos do sistema:
Event Type: Error
Event Source: Schannel
Event Category: None
Event ID: 36870
Date: 2/11/2012
Time: 12:44:55 AM
User: N/A
Computer:
Description: A fatal error occurred when attempting to access the SSL server credential private key. The error code returned from the cryptographic module is 0x80090016.
Esse evento ou erro indica que houve um problema ao adquirir a chave privada do certificado. Para resolver o aviso, siga estas etapas:
Verifique as permissões na pasta MachineKeys . Todas as chaves privadas são armazenadas na pasta MachineKeys , portanto, certifique-se de ter as permissões necessárias.
Se as permissões estiverem em vigor e se o problema ainda não tiver sido corrigido, pode haver um problema com o certificado. Pode ter sido corrompido. Você pode ver um código de erro no seguinte log de
0x8009001aeventos SChannel:Event Type: Error Event Source: Schannel Event Category: None Event ID: 36870 Date: 2/11/2012 Time: 12:44:55 AM User: N/A Computer: A fatal error occurred when attempting to access the SSL server credential private key. The error code returned from the cryptographic module is 0x8009001a.Verifique se o site funciona com um certificado de teste.
Faça um backup do certificado existente e substitua-o por um certificado autoassinado.
Tente acessar o site usando HTTPS.
Se funcionar, o certificado usado anteriormente foi corrompido e deve ser substituído por um novo certificado de trabalho. Às vezes, o problema pode não estar no certificado, mas no emissor. Durante a verificação da cadeia de certificados, você poderá ver o erro
CERT_E_UNTRUSTEDROOT (0x800b0109)se o certificado de autoridade de certificação raiz não for raiz confiável.Para corrigir esse erro, adicione o certificado da autoridade de certificação ao repositório da autoridade de certificação raiz confiável em Minha conta de computador no servidor. Durante a verificação da cadeia de certificados, você também pode receber o erro
-2146762480(0x800b0110).Para resolver o erro, siga estas etapas para verificar o tipo de uso do certificado:
- Abra o certificado.
- Selecione a guia Detalhes.
- Selecione Editar propriedades.
- Na guia Geral, certifique-se de que a opção Habilitar todas as finalidades para este certificado esteja selecionada e, o mais importante, a Autenticação do servidor deve estar presente na lista.
Cenário 3
Os dois primeiros cenários ajudam a verificar a integridade do certificado. Depois de confirmar que não há problemas com o certificado, um problema considerável é resolvido. Mas, e se o site ainda não estiver acessível por HTTPS? Verifique as ligações HTTPS do site e determine em qual porta e IP ele está escutando.
Solução
Execute o comando a seguir para garantir que nenhum outro processo esteja escutando na porta SSL usada pelo site.
netstat -ano" or "netstat -anob"Se houver outro processo escutando nessa porta, verifique por que esse processo está usando essa porta.
Tente alterar a combinação de porta IP para verificar se o site está acessível.
Cenário 4
Até agora, você pode ter certeza de que tem um certificado de trabalho adequado instalado no site e não há outro processo usando a porta SSL para este site. No entanto, você ainda pode ver o erro "A página não pode ser exibida" ao acessar o site por HTTPS. Quando um cliente se conecta e inicia uma negociação SSL, HTTP.sys pesquisa sua configuração SSL para o par "IP:Port" ao qual o cliente está conectado. A configuração SSL HTTP.sys deve incluir um hash de certificado e o nome do repositório de certificados antes que a negociação SSL seja bem-sucedida. O problema pode estar no .HTTP.SYS SSL Listener
O hash do certificado registrado com HTTP.sys pode ser NULL ou pode conter GUID inválido.
Solução
Execute o comando a seguir:
netsh http show sslAqui estão exemplos de cenários de trabalho e não trabalho:
Cenário de trabalho
Configuração Configuração IP:porta 0.0.0.0:443 Hash de certificado c09b416d6b 8d615db22 64079d15638e96823d Application ID {4dc3e181-e14b-4a21-b022-59fc669b0914} Nome do repositório de certificados Meu Verificar a revogação do certificado do cliente Habilitado Tempo de atualização de revogação 0 Tempo limite de recuperação de URL 0 ...... ...... Cenário de não funcionamento
Configuração Configuração IP:porta 0.0.0.0:443 Hash de certificado Application ID {00000000-0000-0000-0000-000000000000} CertStoreName Meu Verificar a revogação do certificado do cliente 0 Tempo de atualização de revogação 0 Tempo limite de recuperação de URL 0 ...... ...... O valor de hash visto no cenário de trabalho é a impressão digital do seu certificado SSL. Observe que o GUID é zero em um cenário de não trabalho. Você pode ver que o Hash tem algum valor ou está em branco. Mesmo se você remover o certificado do site e executar
netsh http show sslo , o site ainda listará o GUID como todos os 0s. Se você vir o GUID como "{0000...............000}", há um problema.Remova essa entrada executando o seguinte comando:
netsh http delete sslcert ipport=<IP Address>:<Port>Por exemplo:
netsh http delete sslcert ipport=0.0.0.0:443Para determinar se algum endereço IP está listado, abra um prompt de comando e execute o seguinte comando:
netsh http show iplistenSe o comando retornar uma lista de endereços IP, remova cada endereço IP na lista usando o seguinte comando:
netsh http delete iplisten ipaddress=<IP Address>Observação
Reinicie o IIS depois disso usando o
net stop http /ycomando.
Cenário 5
Apesar de tudo isso, se você ainda não conseguir navegar no site em HTTPS, capture um rastreamento de rede do cliente ou do servidor. Filtre o rastreamento por "SSL ou TLS" para examinar o tráfego SSL.
Aqui está um instantâneo de rastreamento de rede de um cenário que não funciona:
Aqui está um instantâneo de rastreamento de rede de um cenário de trabalho:
Esse é o método de como você olha para um rastreamento de rede. Você precisa expandir os detalhes do quadro e ver qual protocolo e criptografia foram escolhidos pelo servidor. Selecione "Server Hello" na descrição para visualizar esses detalhes.
No cenário não funcionando, o cliente foi configurado para usar somente TLS 1.1 e TLS 1.2. No entanto, o servidor Web do IIS foi configurado para oferecer suporte até o TLS 1.0, portanto, o handshake falhou.
Verifique as chaves do Registro para determinar quais protocolos estão habilitados ou desabilitados. Este é o caminho:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
O DWORD habilitado deve ser definido como 1. Se estiver definido como 0, o protocolo será desabilitado.
Por exemplo, o SSL 2.0 está desabilitado por padrão.