IIS 7 ainda atendendo certificado SSL antigo

27

Instalei um novo certificado SSL no IIS7, removi o certificado antigo e configurei as ligações para o novo certificado - portanto, https agora está vinculado apenas ao novo certificado.

Reiniciei o IIS7 (e o próprio Windows 2008 Server) e verifiquei o certificado usando os comandos:

netsh http show sslcert

Isso mostrou apenas o novo certificado, como eu esperava

certutil -store MY

Isso também mostrou apenas o novo certificado e não o antigo, como eu esperava

Também abri o mmc e verifiquei os certificados lá e só vejo o novo e não o antigo.

Também estou usando uma conta com privilégios de administrador.

No entanto - quando abro um navegador (de qualquer computador) e vou para o site https, ele ainda está usando o certificado antigo. Mesmo quando eu removo o certificado antigo do navegador, ele ainda recebe o antigo e não o novo.

Alguém pode me ajudar a descobrir onde estou errado? Como posso exorcizar o certificado fantasma antigo?

união
fonte

Respostas:

28

Primeiro, alguns pontos que provavelmente são iguais para você

  • Eu estava tentando atualizar um certificado porque ele expirou.
  • Eu tenho vários domínios vinculados ao mesmo IP. Eles são um certificado de SAN, mas isso provavelmente é irrelevante.
  • Eu estava tentando usar o armazenamento de certificados centralizado. Mais uma vez, acho que isso é irrelevante para a maioria das minhas respostas.
  • Eu já havia tentado atualizar o certificado, mas ele não estava mostrando a nova data.
  • Você provavelmente está em pânico agora se seu certificado antigo já tiver expirado. Respire fundo...

Primeiro, recomendo ir https://www.digicert.com/help/e fazer o download da ferramenta DigiCert. Você também pode usá-lo online.

Entre no seu site https://example.come ele mostrará a data de validade e a impressão digital (o que a MS chama de hash do certificado). Ele faz uma pesquisa em tempo real para que você não precise se preocupar se o seu navegador (ou servidor intermediário) está armazenando em cache algo.

Se você estiver usando o armazenamento de certificados centralizado, convém ter 100% de certeza de que o arquivo .pfx é a versão mais recente. Acesse o diretório de armazenamento e execute este comando:

C:\WEBSITES\SSL> certutil -dump www.example.com.pfx

Isso mostrará a data de vencimento e a hash / impressão digital. Obviamente, se essa data de vencimento estiver incorreta, você provavelmente apenas exportou o certificado errado para o sistema de arquivos; portanto, corrija-o primeiro.

Se você estiver usando o CCS, assumindo que este comando certutil fornece a data de vencimento esperada (do seu certificado atualizado), você pode prosseguir.

Execute o comando:

netsh http show sslcert > c:\temp\certlog.txt
notepad c:\temp\certlog.txt

Você provavelmente tem um monte de coisas aqui, então é mais fácil abri-lo em um editor de texto.

Você desejará procurar neste arquivo o hash ERRADO que você obteve digicert.com(ou a impressão digital que você obteve no Chrome).

Para mim, isso rendeu o seguinte. Você verá que ele está vinculado a um IP e não ao meu nome de domínio esperado. Este é o problema. Parece que isso (por qualquer motivo, não tenho certeza) tem precedência sobre o conjunto de ligações no IIS que eu acabei de atualizar example.com.

IP:port                      : 10.0.0.1:443
Certificate Hash             : d4a17e3b57e48c1166f18394a819edf770459ac8
Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
Certificate Store Name       : My
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check                  : Enabled
Revocation Freshness Time    : 0
URL Retrieval Timeout        : 0
Ctl Identifier               : (null)
Ctl Store Name               : (null)
DS Mapper Usage              : Disabled
Negotiate Client Certificate : Disabled

Eu nem sei de onde veio essa ligação - eu não tenho nenhuma ligação SSL no meu site padrão, mas esse servidor tem alguns anos e acho que algo ficou corrompido e preso.

Então você vai querer excluí-lo.

Para garantir a segurança, execute o seguinte comando primeiro para garantir que você esteja excluindo apenas este item:

C:\Windows\system32>netsh http show sslcert ipport=10.0.0.1:443

SSL Certificate bindings:
-------------------------

IP:port                      : 10.0.0.1:443
Certificate Hash             : d4a17e3b57e48c1166f18394a819edf770459ac8
Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
Certificate Store Name       : My
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check                  : Enabled
Revocation Freshness Time    : 0
URL Retrieval Timeout        : 0
Ctl Identifier               : (null)
Ctl Store Name               : (null)
DS Mapper Usage              : Disabled
Negotiate Client Certificate : Disabled

Agora, verificamos que esta é a impressão digital 'ruim' e, como único registro esperado, podemos excluí-la com este comando:

C:\Windows\system32>netsh http delete sslcert ipport=10.0.0.1:443

SSL Certificate successfully deleted

Felizmente, se você agora voltar ao Digicert e executar novamente o comando, ele fornecerá a impressão digital do certificado esperado. Você deve verificar todos os nomes de SAN, se tiver algum, apenas para ter certeza.

Provavelmente, quero IISRESET aqui para garantir que não haja surpresas mais tarde.

Nota final: se você estiver usando o armazenamento centralizado de certificados e estiver vendo um comportamento irregular, tentando determinar se está pegando seu certificado a partir daí ou não, não se preocupe - a culpa não é sua. Às vezes, parece que os arquivos são novos imediatamente, mas os antigos são armazenados em cache. Abrir e salvar novamente a ligação SSL após fazer qualquer tipo de alteração parece redefini-la, mas não 100% do tempo.

Boa sorte :-)

Simon
fonte
3
Você é um Simon entre Simons. No nosso caso, verificou-se que nosso servidor havia 'armazenado em cache' o certificado expirado, [::1]:443enquanto a atualização do certificado no IIS atualizava apenas o registro 0.0.0.0:443. Obrigado!
tuespetre 16/08/16
11
Isso resolveu meu problema com vários domínios no mesmo IP; não usa armazenamento de certificados centralizado.
Chris F Carroll
11
Eu tive que usar isso algumas vezes. O software de gerenciamento de hospedagem na web PLESK ocasionalmente atrapalha as ligações de certificado e eu acabo precisando dos comandos netsh acima para remover a ligação incorreta. Não tenho certeza se as versões são afetadas, mas eu estou usando a versão atual do PLESK Onyx no Windows Server 2016.
BenSwayne
No meu caso, era por nome de host e porta. Portanto, para filtrar e excluir por nome de host, os comandos seriam: "http netsh mostrar sslcert hostnameport = www.example.com: 443" e "http netsh excluir sslcert hostnameport = www.example.com: 443"
Karthik Jayapal
14

Verifique o certificado vinculado ao site no IIS. Você pode clicar com o botão direito do mouse no site e escolher editar ligações. Lá, você deverá ver uma ligação para a porta 443 associada a um certificado SSL. Isso ainda pode estar apontando para o antigo.

Tatas
fonte
Eu verifiquei e o certificado nas ligações para a porta 443 é o novo certificado, não o antigo. Obrigado por sua sugestão.
joechip
11
Estranho, eu nunca tive isso acontecendo. Embora eu nunca remova os certificados antigos. Como você tem certeza de que ainda está recebendo o certificado antigo? Está mostrando que expirou?
Tatas 11/10
Sim, no navegador, você pode verificar os detalhes do certificado (data de validade etc.) e é o antigo que o IIS7 está servindo.
joechip
11
Eu já vi isso com - Chrome. Chrome armazena em cache o certificado antigo e mostra isso para o usuário.
TomTom
3

Eu apenas resolvi isso. O servidor estava realmente sentado atrás de um servidor ISA, então também tivemos que instalar o novo certificado SSL no servidor ISA.

união
fonte
3

Eu tive o mesmo problema e verifiquei as ligações também. Eu tinha 2 aplicativos instalados no IIS, um estava usando o novo certificado, outro usando o antigo.

Para corrigir, tive que remover completamente o certificado do servidor (possivelmente uma reinicialização).

No Gerenciador do IIS -> (raiz da árvore do IIS) -> ícone Certificados do servidor, selecione o certificado antigo e clique em Remover no painel Ações.

Andy Joiner
fonte
11
Da mesma forma, na verdade, tínhamos um site STOPPED adicional que referenciava o certificado antigo e, uma vez que atualizamos esse site para usar o novo, o site ativo atual começou a mostrar o novo certificado!
Ação Dan
1

Eu experimentei isso durante uma atualização do IPv6. Eu tinha o IIS fornecendo um redirecionamento caso alguém tentasse acessar um serviço via HTTP que não era realmente um serviço baseado em servidor da web. Atualizei o serviço real (um servidor de voz) para IPv6, mas não consegui atualizar as ligações do redirecionamento para incluir os endereços IPv6.

Isso resultou na falha das resoluções em uma captura globalmente vinculada de todos os sites que continham o certificado desatualizado. Como a captura era apenas do 404, parecia que o site não estava funcionando, quando na realidade estava atingindo o site errado.

AJ Henderson
fonte
0

Caso alguém ainda tropeçar nessa questão. A minha foi resolvida indo para

C:\inetpub\wwwroot

Então você encontrará um arquivo web.config, abra-o usando o bloco de notas e remova a linha com

<httpRedirect enabled="true" destination="http://foo.company.org" />

Salve e tente novamente para acessar o host local ou o site raiz do seu servidor IIS.

Joe Marie Escuadra
fonte