Compartilhar via


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.

Número original do KB: 3044974

Resumo

A maioria dos problemas dos Serviços Federados do Active Directory (AD FS) 2.0 pertence a uma das seguintes categorias principais. 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 tenta criptografar um token que deve ser emitido para um aplicativo de terceira parte confiável:

    • ID do Evento 316
      Ocorreu um erro durante uma tentativa de criar a cadeia de certificados para o certificado de autenticação de confiança da terceira parte confiável.
    • ID do Evento 315
      Ocorreu um erro durante uma tentativa de criar a cadeia de certificados para o certificado de autenticação 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 de terceira 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. Veja a seguir os valores do certificado:Element: 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 o certificado de configuração.
    • ID do evento 102
      Ocorreu 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 do AD FS 2.0 do Windows.
      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 'xxxxxxxx'

Resolução

Para resolver esse problema, siga estas etapas na ordem fornecida. Essas etapas ajudarão você a determinar a causa do problema. Certifique-se de verificar se o problema foi 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, descriptografia de token e assinatura de token) são válidos e têm uma chave privada associada a eles. Além disso, certifique-se de que o certificado esteja dentro do período de validade.

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

Onde encontrar os certificados

  • Para certificados de comunicações 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 do snap-in Certificados, clique no repositório de certificados da conta do computador.

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

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

  • Para certificados de assinatura e descriptografia de token:

    • Se os certificados forem certificados autoassinados adicionados pelo servidor ADFS por padrão, faça logon interativamente no servidor ADFS usando a conta de serviço do ADFS e verifique o repositório de certificados do usuário (certmgr.msc).
    • Se os certificados forem de uma autoridade de certificação (CA), configurada pelos administradores do ADFS após a desativação do AutoCertificateRollover, você poderá encontrá-lo no repositório de certificados do servidor ADFS.

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

Os certificados que usam a chave privada CNG não têm suporte para Assinatura de Token e Descriptografia de Token. Se o AD FS gerou o certificado autoassinado, esse certificado não usará CNG. Para um certificado emitido por uma autoridade de certificação, verifique se o certificado não é baseado em CNG.

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

Etapa 3: Verificar se a associação SSL dos certificados de comunicação de serviço no IIS está associada à porta 443

Como verificar e corrigir

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

  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 do lado direito, clique em Vinculações. Certifique-se de que o tipo de lance https esteja vinculado à porta 443. Caso contrário, clique em Editar para alterar a porta.

    Captura de tela da janela Associações de 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 por uma verificação de revogação

Como verificar

  1. Abra 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á para o final do arquivo e verifique se ele inclui o seguinte para um teste de revogação bem-sucedido:

    Verificação de revogação de certificado folha aprovada
    CertUtil: comando -verify 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, verifique 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 em que vários caminhos são especificados em um tipo de arquivo, ambos os caminhos devem ser marcados como verificados.

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

    Falha no tempo "AIA": 0
    Erro ao recuperar URL: o nome ou endereço do servidor não pôde ser resolvido 0x80072ee7 (WIN32: 12007)
    http://corppki/aia/mswww(6).crt

    ---------------- Certificado CDP ----------------
    Verificado "Base CRL (5a)" Tempo: 0
    [0.0] http://mscrl.contoso.com/pki/crl/mswww(6).crl

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

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

    A coleta de um rastreamento de rede pode ajudar se algum caminho AIA, 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 que seja válido e não revogado.

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

Como verificar 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 armazenamentos de certificados do computador.

  4. Clique com o botão direito do mouse no serviço 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 Leitura.

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

Etapa 6: Verificar se o recurso AutoCertificateRollover do ADFS está habilitado para certificados de assinatura e descriptografia de token

Como verificar o recurso AutoCertificateRollover do ADFS

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

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

AD FS 2.0: Como habilitar e usar imediatamente AutoCertificateRollover

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

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

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

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

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

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

  3. Localize CN=<GUID,CN>=ADFS,CN=Microsoft,CN=Dados do Programa,DC=<Domínio,DC>=COM.<>

    Observação

    Nesse nome de contêiner, os parâmetros entre colchetes representam os valores reais. Um exemplo de um 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 o Windows PowerShell no servidor que está executando o serviço AD FS.

    2. Execute o comando a seguir:

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

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

Etapa 9: Verificar se há atualizações de certificado em provedores de declarações e terceiras partes confiáveis

Se os certificados de assinatura e descriptografia de token tiverem sido alterados, verifique se os provedores de declarações e as terceiras partes confiáveis estão atualizados para ter os novos certificados. Se os provedores de declarações e as terceiras 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 terceira parte confiável.
  • O provedor de declarações e a terceira parte confiável podem exigir apenas que os novos certificados de assinatura e descriptografia de token (sem uma chave privada) sejam atualizados na confiança de federação em sua extremidade.

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

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

Cenários

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

    Observação

    Exigir a assinatura de solicitações de entrada é uma opção configurável. Para definir esse requisito para uma relação de confiança de terceira 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 SAML assinada da terceira 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 terceira 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 terceira 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 SAML assinada de um provedor de declarações. Nesse cenário, a solicitação de saída deve ser assinada.

O que verificar para resolver o problema

  • Verifique se o certificado de autenticação da relação de confiança 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 certificados se a configuração de revogação não especificar "nenhum" ou uma configuração "somente cache".

    Observação

    Você pode usar cmdlets do Windows PowerShell para AD FS 2.0 para definir 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, consulte Solucionando problemas de certificado com o AD FS 2.0.