Erro de certificado do ADFS 2.0: ocorreu um erro durante uma tentativa de criar a cadeia de certificados

Este artigo ajuda a corrigir o erro de certificado do ADFS 2.0 durante uma tentativa de criar a cadeia de certificados.

Aplica-se a: Windows Server 2012 R2
Número de KB original: 3044974

Resumo

A maioria dos problemas do AD FS (Active Directory Federated Services) 2.0 pertence a uma das seguintes categorias de main. Este artigo contém instruções passo a passo para solucionar problemas de certificado.

Sintomas

  • Esse problema começa depois que um certificado do AD FS é alterado ou substituído.

  • O programa para de aceitar o token emitido pelo AD FS.

  • O AD FS retorna um dos seguintes erros quando recebe uma solicitação ou resposta assinada ou se ele tenta criptografar um token que deve ser emitido para um aplicativo de parte confiável:

    • ID do evento 316
      Ocorreu um erro durante uma tentativa de criar a cadeia de certificados para o certificado de assinatura de confiança da parte confiável.
    • ID do evento 315
      Ocorreu um erro durante uma tentativa de criar a cadeia de certificados para o certificado de assinatura de confiança do provedor de declarações.
    • ID do evento 317
      Ocorreu um erro durante uma tentativa de criar a cadeia de certificados para o certificado de criptografia de confiança da parte confiável.
  • As seguintes IDs de evento relacionadas ao certificado são registradas no log de eventos do AD FS:

    • ID do evento 133
      Descrição: durante o processamento da configuração do Serviço de Federação, o elemento 'serviceIdentityToken' foi encontrado com dados inválidos. A chave privada do certificado configurado não pôde ser acessada. A seguir estão os valores do certificado:Elemento: serviceIdentityToken
    • ID do evento 385
      O AD FS 2.0 detectou que um ou mais certificados no banco de dados de configuração do AD FS 2.0 precisam ser atualizados manualmente.
    • ID do evento 381
      Ocorreu um erro durante uma tentativa de criar a cadeia de certificados para certificado de configuração.
    • ID do evento 102
      Houve um erro ao habilitar pontos de extremidade do Serviço de Federação.
      Dados adicionais
      Detalhes da exceção:
      System.ArgumentNullException: o valor não pode ser nulo.
      Nome do parâmetro: certificado
    • ID do evento: 387
      O AD FS 2.0 detectou que um ou mais dos certificados especificados no Serviço de Federação não estavam acessíveis à conta de serviço usada pelo Serviço Windows do AD FS 2.0.
      Ação do usuário: verifique se a conta de serviço do AD FS tem permissões de leitura nas chaves privadas do certificado.
      Detalhes adicionais:
      Certificado de assinatura de token com impressão digital 'xxxxxxxxx'

Resolução

Para resolve esse problema, siga estas etapas na ordem fornecida. Essas etapas ajudarão você a determinar a causa do problema. Verifique se você marcar se o problema é resolvido após cada etapa.

Etapa 1: Verificar se há chaves privadas

Verifique se todos os certificados do AD FS (comunicações de serviço, descriptografação de token e assinatura de token) são válidos e têm uma chave privada associada a eles. Além disso, verifique se o certificado está dentro do período de validade.

Captura de tela da janela Certificado mostrando o período de validade.

Onde localizar os certificados

  • Para certificados de comunicação de serviço:

    1. No servidor do AD FS, clique em Iniciar, clique em Executar, digite MMC.exe e pressione Enter.

    2. Na caixa de diálogo Adicionar/Remover Snap-in , clique em OK.

    3. Na tela snap-in Certificados , clique no repositório de certificados da conta de computador.

      Captura de tela da janela snap-in certificado com a conta de computador selecionada.

    4. Para exibir as propriedades do certificado comunicações de serviço, expanda Certificado (Computador Local),expanda Pessoal e clique em Certificados.

  • Para certificados de assinatura de token e descriptografação de token:

    • Se os certificados forem certificados autoassinados que são adicionados pelo servidor ADFS por padrão, logon interativo no servidor ADFS usando a conta do Serviço do ADFS e marcar repositório de certificados do usuário (certmgr.msc).
    • Se o certificado for de uma autoridade de certificado (AC), configurado pelos administradores do ADFS após desabilitar o AutoCertificateRollover, você poderá localizá-lo no repositório de certificados do servidor ADFS.

Etapa 2: certifique-se de que os certificados não estão usando uma chave privada CNG (Cryptographic Next Generation)

Não há suporte para certificados que usam a chave privada CNG para Assinatura de Token e Descriptografia de Token. Se o AD FS gerou o certificado autoassinado, esse certificado não usará o CNG. Para um certificado emitido por uma AC, verifique se o certificado não é baseado em CNG.

Se o modelo de AC estiver usando qualquer um dos provedores de serviços criptográficos listados, o certificado emitido por essa AC não terá suporte do servidor AD FS.

Etapa 3: verifique se a associação SSL dos certificados de comunicação do Serviço no IIS está vinculada à porta 443

Como marcar e corrigir

  1. Inicie o Gerenciador do IIS. Para fazer isso, clique em Iniciar, clique em Ferramentas Administrativas e clique em Gerenciador do IIS (Serviços de Informações da Internet).

  2. Clique no nome do servidor e expanda a pasta Sites.

  3. Localize seu site (normalmente, ele é conhecido como "Site Padrão" e selecione-o.

  4. No menu Ações no lado direito, clique em Associações. Verifique se o tipo de lance https está vinculado à porta 443. Caso contrário, clique em Editar para alterar a porta.

    Captura de tela da janela Associações do Site que mostra que o tipo de lance https está vinculado à porta 443.

Etapa 4: verifique se o certificado de comunicação de serviço é válido, confiável e passa uma marcar de revogação

Como verificar

  1. Abra o Gerenciamento do AD FS 2.0.

  2. Expanda Serviço, clique em Certificado, clique com o botão direito do mouse no certificado de comunicações de serviço e clique em Exibir certificado.

  3. No painel de detalhes, clique em Copiar para arquivo e salve o arquivo como Filename.cer.

  4. Em um prompt de comando, execute o seguinte comando para determinar se o certificado de comunicação de serviço é válido:

    Run 'Certutil -verify -urlfetch certificate.CER > cert_cerification.txt'
    
  5. Abra o arquivo de saída criado acima de "cert_verification.txt".

  6. Vá até o final do arquivo e marcar se ele inclui o seguinte para um teste de revogação bem-sucedido:

    Marcar de revogação de certificado folha aprovada
    CertUtil: -verificar o comando concluído com êxito.

  7. Se o arquivo indicar que as verificações de revogação falharam ou que o servidor de revogação estava offline, marcar o log para determinar qual certificado na cadeia de certificados não pôde ser verificado.

    Verifique se algum caminho AIA ou CDP falhou. Em um cenário no qual vários caminhos são especificados em um tipo de arquivo, ambos os caminhos devem ser marcados como verificados.

    ---------------- do Certificado ---------------- AIA
    Tempo de "Certificado (0)" verificado: 0
    [0.0] http://www.contoso.com/pki/mswww(6).crt

    Tempo de "AIA" com falha: 0
    URL de recuperação de erro: o nome ou o endereço do servidor não pôde ser resolvido 0x80072ee7 (WIN32: 12007)
    http://corppki/aia/mswww(6).crt

    ---------------- cdp de certificado ----------------
    Verificado "CRL base (5a)" Hora: 0
    [0.0] http://mscrl.contoso.com/pki/crl/mswww(6).crl

    Verificado "CRL base (5a)" Hora: 0
    [1.0] http://crl.contoso.com/pki/crl/mswww(6).crl

    Tempo de "CDP" com falha: 0
    URL de recuperação de erro: o nome ou o endereço do servidor não pôde ser resolvido 0x80072ee7 (WIN32: 12007)
    http://corppki/crl/mswww(6).crl

    Coletar um rastreamento de rede pode ajudar se qualquer um dos caminhos AIA ou CDP ou OCSP não estiver disponível.

  8. Se a entrada de log indicar que o certificado foi revogado, você deverá solicitar outro certificado válido e que não seja revogado.

Etapa 5: verifique se as contas de serviço do ADFS têm a permissão de leitura para a chave privada dos certificados do ADFS

Como marcar a permissão de leitura

  1. No servidor do AD FS, clique em Iniciar, clique em Executar, insira MMC.exe e pressione Enter.

  2. Na caixa de diálogo Adicionar/Remover Snap-in , clique em OK.

  3. Na janela Raiz do Console, clique em Certificados (Computador Local) para exibir os repositórios de certificados do computador.

  4. Clique com o botão direito do mouse no serviço do AD FS, aponte para Todas as Tarefas e clique em Gerenciar chaves privadas.

  5. Verifique se a conta do AD FS tem a permissão De leitura.

    Captura de tela da janela de permissão que mostra que a conta do AD FS tem a permissão De leitura.

Etapa 6: verificar se o recurso AutoCertificateRollover do ADFS está habilitado para certificados de assinatura de token e descriptografação de token

Como marcar recurso AutoCertificateRollover do ADFS

  • Se AutoCertificateRollover estiver desabilitado, os certificados de assinatura de token e descriptografação de token não serão renovados automaticamente. Antes de esses certificados expirarem, certifique-se de que um novo certificado seja adicionado à configuração do AD FS. Caso contrário, a parte confiável não confiará no token emitido pelo servidor AD FS.
  • Se AutoCertificateRollover estiver habilitado, novos certificados de assinatura de token e descriptografação de token serão gerados 20 dias antes da expiração dos certificados antigos. Os novos certificados obterão status primários cinco dias após serem gerados. Depois que o novo conjunto de certificados for gerado, certifique-se de que as mesmas informações sejam atualizadas sobre as confianças da parte confiável e do provedor de declaração.

Para obter mais informações sobre o recurso AutoCertificateRollover do AD FS, confira os seguintes tópicos do TechNet:

AD FS 2.0: como habilitar e usar imediatamente o AutoCertificateRollover

Etapa 7: Adicionar o nome do serviço de federação no certificado SAN

Se o certificado tiver o atributo SAN (Nome Alternativo da Entidade) habilitado, o nome do serviço de federação também deverá ser adicionado na SAN do certificado, juntamente com outros nomes. Para obter mais informações, consulte Requisitos de certificado SSL.

Etapa 8: Verificar permissões da conta de serviço para o contêiner de compartilhamento de certificados (CN=<GUID,CN>=ADFS,CN=Microsoft,CN=Program Data,DC=<Domain,DC>=<COM>)

Como marcar e corrigir a permissão da conta de serviço

  1. Em um DC (controlador de domínio), abra Adsiedit.msc.

  2. Conecte-se ao contexto de nomenclatura padrão.

  3. Localize CN=<GUID,CN>=ADFS,CN=Microsoft,CN=Program Data,DC=<Domain,DC>=<COM>.

    Observação

    Neste nome de contêiner, os parâmetros em colchetes representam os valores reais. Um exemplo de GUID é "62b8a5cb-5d16-4b13-b616-06caea706ada".

  4. Clique com o botão direito do mouse no GUID e clique em Propriedades. Se houver mais de um GUID, siga estas etapas:

    1. Inicie Windows PowerShell no servidor que está executando o serviço do AD FS.

    2. Execute o seguinte comando:

      Add-PSSnapin microsoft.adfs.powershellGet-ADFSProperties
      
    3. Localize o GUID do serviço AD FS em execução em CertificateShareingContainer.

  5. Verifique se a conta de serviço do ADFS tem as permissões De leitura, gravação e "Criar todos os objetos filho" concedidas a esse objeto e a todos os objetos descendentes.

Etapa 9: verificar provedores de declarações e partes confiáveis para obter atualizações de certificado

Se os certificados de assinatura de token e descriptografação de token tiverem sido alterados, verifique se os provedores de declarações e as partes confiáveis serão atualizados para ter os novos certificados. Se os provedores de declarações e as partes confiáveis não forem atualizados, eles não poderão confiar no serviço do AD FS.

  • Depois que a alteração for feita, compartilhe o Federationmetadata.xml com o provedor de declarações e a parte confiável.
  • O provedor de declarações e a parte confiável podem exigir apenas que os novos certificados de assinatura de token e descriptografação de token (sem uma chave privada) sejam atualizados na confiança da federação em seu final.

Etapa 10: verifique se há uma solicitação assinada e uma resposta do provedor de declarações ou da parte confiável

A solicitação e a resposta assinadas podem ser recebidas pelo servidor do AD FS do provedor de declarações ou da parte confiável. Nesse cenário, o servidor AD FS pode marcar a validade do certificado usado para assinatura e falha. O AD FS também verifica a validade do certificado relacionado à parte confiável que é usada para enviar um token criptografado para o servidor do AD FS.

Cenários

  • O AD FS 2.0 recebe uma solicitação SAML-P assinada que é enviada por uma parte confiável.

    Observação

    Exigir a assinatura de solicitações de entrada é uma opção configurável. Para definir esse requisito para uma confiança de parte confiável, use o parâmetro RequireSignedSamlRequests junto com o cmdlet Set-ADFSRelyingPartyTrust.

  • O AD FS 2.0 recebe uma solicitação de saída do SAML assinada da parte confiável. Nesse cenário, a solicitação de saída deve ser assinada.

  • O AD FS 2.0 recebe uma solicitação de saída de um provedor de declarações e criptografa uma solicitação de saída para a parte confiável. Nesse cenário, o provedor de declarações inicia a saída.

  • O AD FS 2.0 emite um token criptografado para uma parte confiável.

  • O AD FS 2.0 recebe um token emitido de um provedor de declarações.

  • O AD FS 2.0 recebe uma solicitação de saída do SAML assinada de um provedor de declarações. Nesse cenário, a solicitação de saída deve ser assinada.

O que marcar para resolve o problema

  • Verifique se o certificado de assinatura do provedor de declarações é válido e não foi revogado.

  • Verifique se o AD FS 2.0 pode acessar a lista de revogação de certificado se a configuração de revogação não especificar "nenhum" ou uma configuração "somente cache".

    Observação

    Você pode usar Windows PowerShell cmdlets do AD FS 2.0 para configurar as seguintes configurações de revogação:

    • Parâmetro SigningCertificateRevocationCheck do cmdlet Set-ADFSClaimsProviderTrust ou Set-ADFSRelyingPartyTrust
    • Parâmetro EncryptionCertificateRevocationCheck do cmdlet Set-ADFSRelyingPartyTrust ou Set-ADFSClaimsProviderTrust

Para obter mais informações, confira Solucionar problemas de certificado com o AD FS 2.0.