O IIS envia um certificado SSL intermediário incorreto

3

Acabei de instalar um novo certificado SSL (da StartCom) em um de nossos servidores e notei que no Chrome há o ícone de cadeado cruzado exibido para o site, então comecei a investigar por que isso acontece. Acontece que é porque o certificado intermediário enviado para o navegador usa o antigo algoritmo de assinatura SHA-1.

Só para ter certeza, peguei nosso certificado (como originalmente foi emitido pela CA), executei-o novamente no OpenSSL para mesclá-lo com o certificado intermediário SHA-2 (baixei do site da CA) e o atualizei novamente IIS. Ainda não ajudou.

Eu fiz um teste no SSL Labs e é isso que mostra:

Oqueeunãoseiéondeapareceocertificadointermediáriomostradoaqui(aquelecomimpressãodigital"a1ac ...").

  1. Ele não está instalado no servidor - verifiquei isso tentando localizá-lo no console de snap-in "Certificados" do servidor:

  • Não faz parte do certificado que atribuí ao site - esta é a saída de certutil -dump cert.pfx :

    ================ Certificate 0 ================
    ================ Begin Nesting Level 1 ================
    Serial Number: 1cab36472d9c51
    Issuer: CN=StartCom Certification Authority, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL
     NotBefore: 10/14/2007 10:57 PM
     NotAfter: 10/14/2022 10:57 PM
    Subject: CN=StartCom Class 2 Primary Intermediate Server CA, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL
    Non-root Certificate
    Template: 
    Cert Hash(sha1): 06 49 69 b7 f4 d6 a7 4f d0 98 be 59 d3 79 fa e4 29 a9 06 fb
    ----------------  End Nesting Level 1  ----------------
    No key provider information
    Cannot find the certificate and private key for decryption.
    
    ================ Certificate 1 ================
    ================ Begin Nesting Level 1 ================
    Serial Number: 07aa747ba37df3
    Issuer: CN=StartCom Class 2 Primary Intermediate Server CA, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL
     NotBefore: 7/15/2015 3:41 AM
     NotAfter: 7/15/2017 3:23 AM
    Subject: [email protected], CN=*.idioma.com, O=IDIOMA, s.r.o., L=Praha, S=Praha, C=CZ
    Non-root Certificate
    Template: 
    Cert Hash(sha1): 02 90 be 6e 6e b8 a5 7a ff aa a2 ac 95 b8 61 2a 3d c7 80 f6
    ----------------  End Nesting Level 1  ----------------
      Key Container = <hidden>
      Unique container name: <hidden>
      Provider = Microsoft Enhanced Cryptographic Provider v1.0
    Encryption test passed
    CertUtil: -dump command completed successfully.
    
  • Observe que a assinatura do certificado intermediário não corresponde à saída do SSL Labs. No entanto, ele corresponde ao que vejo quando abro o certificado do site no IIS, acesse seu caminho de certificação, abra o certificado intermediário e veja sua assinatura.

    O que faz o IIS enviar esse certificado intermediário específico?

    UPDATE :

    A parte pública do meu certificado (o próprio arquivo CRT que recebi da CA) é aqui .

    Saída de certutil -verifystore CA "StartCom Class 2 Primary Intermediate Server CA" :

    CA "Intermediate Certification Authorities"
    ================ Certificate 3 ================
    Serial Number: 1cab36472d9c51
    Issuer: CN=StartCom Certification Authority, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL
     NotBefore: 10/14/2007 10:57 PM
     NotAfter: 10/14/2022 10:57 PM
    Subject: CN=StartCom Class 2 Primary Intermediate Server CA, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL
    Non-root Certificate
    Cert Hash(sha1): 06 49 69 b7 f4 d6 a7 4f d0 98 be 59 d3 79 fa e4 29 a9 06 fb
    No key provider information
    Cannot find the certificate and private key for decryption.
    Encryption test passed
    Verified Issuance Policies:
        1.3.6.1.4.1.23223.1.1.1
    Verified Application Policies:
        1.3.6.1.5.5.7.3.1 Server Authentication
        1.3.6.1.5.5.7.3.2 Client Authentication
        1.3.6.1.5.5.7.3.4 Secure Email
        1.3.6.1.5.5.7.3.3 Code Signing
        1.3.6.1.5.5.7.3.8 Time Stamping
        1.3.6.1.4.1.311.10.3.4 Encrypting File System
        1.3.6.1.5.5.7.3.6 IP security tunnel termination
        1.3.6.1.5.5.7.3.7 IP security user
    Certificate is valid
    CertUtil: -verifystore command completed successfully.
    

    Saída de certutil -GroupPolicy -verifystore CA "StartCom Class 2 Primary Intermediate Server CA" :

    CA "Intermediate Certification Authorities"
    CertUtil: -verifystore command FAILED: 0x80090011 (-2146893807 NTE_NOT_FOUND)
    CertUtil: Object was not found.
    
        
    por twoflower 16.07.2015 / 16:27

    2 respostas

    7

    Não é culpa do IIS. Parece que você fez o download do certificado de CA intermediário incorreto ou dos certificados mesclados incorretamente com o OpenSSL.

    O IIS cria internamente a cadeia de certificados e usa esses certificados (exceto o certificado raiz, que não é transmitido durante o handshake SSL) para enviar ao cliente. Mesmo que o certificado não seja apresentado na loja, o IIS pode usar a extensão de certificado de acesso a informações da autoridade para recuperar o certificado de emissor ausente.

    Com base na sua saída, o certificado CA intermediário (no pacote PFX) não é o emissor correto de seu certificado. Se você pudesse nos enviar (ou postar aqui) parte pública do seu certificado, eu forneceria mais informações sobre o que está acontecendo. Mas, muito provavelmente, o problema está no lado da StartCom.

    Editar 17.07.2015

    Examinei sua saída e descobri que a StartSSL tomou uma decisão ruim ao renovar seu certificado de CA intermediário. Eles reutilizaram o par de chaves e, como resultado, várias cadeias idênticas podem ser geradas para seu certificado por meio de diferentes certificados de CA intermediários e uma única raiz. Dependendo de vários fatores, qualquer cadeia pode ser selecionada por meio do mecanismo de encadeamento.

    Uma boa prática é renovar o certificado da CA com um novo par de chaves quando qualquer informação significativa for selecionada no certificado da autoridade de certificação.

    O que você deve fazer (se possível):

    1. remova ligações no IIS.
    2. exporte o certificado SSL para o PFX. No assistente de exportação, desmarque a opção que inclui todos os certificados na cadeia e marque para excluir a chave privada se a exportação for bem-sucedida.
    3. exclua o certificado da loja e limpe o cache do CryptoAPI: certutil -urlcache * delete .
    4. instale o certificado de autoridade de certificação StartSSL adequado nas autoridades de certificação Local Machine \ Intermediate: ( link )
    5. instale o PFX exportado para a loja de máquinas (contêiner pessoal). Você pode selecionar para marcar a chave privada como exportável durante a operação de importação.
    6. Clique duas vezes no certificado, mude para a guia Caminho de certificação, selecione o certificado CA intermediário - > Visualize o certificado e verifique se ele é um certificado SHA256 adequado.
    7. configurar ligações SSL no IIS.
    por 16.07.2015 / 17:03
    0

    Embora eu não possa comentar especificamente sobre a StartCom, tive problemas semelhantes no passado de fornecedores mudando de SHA 1 para SHA 2, geralmente problemas com certificados de assinatura cruzada.

    O que eu descobri ser o melhor caminho a seguir é encontrar todos os certificados intermediários e raiz retornados pelo seu servidor no momento atual e excluir as entradas intermediárias e raiz.

    No seu caso, esta seria a 'CA do Servidor Intermediário Primário da Classe 2 da StartCom' e 'Autoridade de Certificação da StartCom'. Você provavelmente desejaria exportá-los primeiro para estar no lado seguro.

    Nesse ponto, você deve conseguir importar os novos certificados do pacote configurável da autoridade de certificação do fornecedor.

        
    por 16.07.2015 / 16:53