Errore del certificato ADFS 2.0: si è verificato un errore durante un tentativo di compilazione della catena di certificati

Questo articolo consente di correggere l'errore del certificato ADFS 2.0 durante un tentativo di compilazione della catena di certificati.

Numero KB originale: 3044974

Riepilogo

La maggior parte dei problemi di Active Directory Federated Services (AD FS) 2.0 appartiene a una delle categorie principali seguenti. Questo articolo contiene istruzioni dettagliate per risolvere i problemi relativi ai certificati.

Sintomi

  • Questo problema viene avviato dopo la modifica o la sostituzione di un certificato AD FS.

  • Il programma smette di accettare il token emesso da AD FS.

  • AD FS restituisce uno degli errori seguenti quando riceve una richiesta o una risposta firmata o se tenta di crittografare un token che deve essere emesso a un'applicazione rely party:

    • ID evento 316
      Si è verificato un errore durante un tentativo di compilazione della catena di certificati per il certificato di firma attendibilità della relying party.
    • ID evento 315
      Si è verificato un errore durante un tentativo di compilazione della catena di certificati per il certificato di firma trust del provider di attestazioni.
    • ID evento 317
      Si è verificato un errore durante un tentativo di compilazione della catena di certificati per il certificato di crittografia trust della relying party.
  • Gli ID evento correlati al certificato seguenti vengono registrati nel registro eventi di AD FS:

    • ID evento 133
      Descrizione: durante l'elaborazione della configurazione del servizio federativo, l'elemento 'serviceIdentityToken' ha trovato dati non validi. Non è stato possibile accedere alla chiave privata per il certificato configurato. Di seguito sono riportati i valori di certificate:Element: serviceIdentityToken
    • ID evento 385
      AD FS 2.0 ha rilevato che uno o più certificati nel database di configurazione di AD FS 2.0 devono essere aggiornati manualmente.
    • ID evento 381
      Si è verificato un errore durante un tentativo di compilazione della catena di certificati per il certificato di configurazione.
    • ID evento 102
      Errore durante l'abilitazione degli endpoint del servizio federativo.
      Dati aggiuntivi
      Dettagli eccezione:
      System.ArgumentNullException: il valore non può essere Null.
      Nome parametro: certificato
    • ID evento: 387
      AD FS 2.0 ha rilevato che uno o più certificati specificati nel servizio federativo non erano accessibili all'account del servizio usato dal servizio Windows AD FS 2.0.
      Azione utente: assicurarsi che l'account del servizio AD FS disponga delle autorizzazioni di lettura per le chiavi private del certificato.
      Altri dettagli:
      Certificato di firma del token con identificazione personale 'xxxxxxxx'

Risoluzione

Per risolvere il problema, seguire questa procedura nell'ordine specificato. Questi passaggi consentono di determinare la causa del problema. Assicurarsi di verificare se il problema viene risolto dopo ogni passaggio.

Passaggio 1: Verificare la presenza di chiavi private

Controllare se tutti i certificati AD FS (comunicazioni del servizio, decrittografia dei token e firma del token) sono validi e hanno una chiave privata associata. Assicurarsi inoltre che il certificato sia compreso nel periodo di validità.

Screenshot della finestra Certificato che mostra il periodo di validità.

Dove trovare i certificati

  • Per i certificati di comunicazione del servizio:

    1. Nel server AD FS fare clic su Start, fare clic su Esegui, digitare MMC.exe e quindi premere INVIO.

    2. Nella finestra di dialogo Aggiungi/Rimuovi snap-in fare clic su OK.

    3. Nella schermata snap-in Certificati fare clic sull'archivio certificati dell'account computer.

      Screenshot della finestra snap-in Certificato con l'opzione Account computer selezionata.

    4. Per visualizzare le proprietà del certificato comunicazioni del servizio, espandere Certificato (computer locale), espandere Personalee quindi fare clic su Certificati.

  • Per i certificati di firma di token e decrittografia dei token:

    • Se i certificati sono certificati autofirmati aggiunti dal server ADFS per impostazione predefinita, accedere in modo interattivo nel server ADFS usando l'account del servizio ADFS e controllare l'archivio certificati dell'utente (certmgr.msc).
    • Se il certificato proviene da un'autorità di certificazione (CA), configurato dagli amministratori DI ADFS dopo aver disabilitato AutoCertificateRollover, dovrebbe essere possibile trovarlo nell'archivio certificati del server ADFS.

Passaggio 2: Assicurarsi che i certificati non usino una chiave privata CNG (Cryptographic Next Generation)

I certificati che usano la chiave privata CNG non sono supportati per la firma del token e la decrittografia dei token. Se AD FS ha generato il certificato autofirmato, tale certificato non usa CNG. Per un certificato emesso da una CA, assicurarsi che il certificato non sia basato su CNG.

Se il modello ca usa uno dei provider di servizi di crittografia elencati, il certificato rilasciato da questa CA non è supportato dal server AD FS.

Passaggio 3: Verificare se l'associazione SSL dei certificati di comunicazione del servizio in IIS è associata alla porta 443

Come controllare e correggere

  1. Avviare Gestione IIS. A tale scopo, fare clic su Start, fare clic su Strumenti di amministrazione e quindi su Gestione Internet Information Services (IIS).

  2. Fare clic sul nome del server e quindi espandere la cartella Siti.

  3. Individuare il sito Web (in genere è noto come "Sito Web predefinito") e quindi selezionarlo.

  4. Nel menu Azioni sul lato destro fare clic su Associazioni. Assicurarsi che il tipo di offerta https sia associato alla porta 443. In caso contrario, fare clic su Modifica per modificare la porta.

    Screenshot della finestra Associazioni sito che mostra che il tipo di offerta https è associato alla porta 443.

Passaggio 4: Assicurarsi che il certificato di comunicazione del servizio sia valido, attendibile e superi un controllo di revoca

Procedure di controllo

  1. Aprire Gestione ADFS 2.0.

  2. Espandere Servizio, fare clic su Certificato, fare clic con il pulsante destro del mouse sul certificato di comunicazione del servizio e quindi scegliere Visualizza certificato.

  3. Nel riquadro dei dettagli fare clic su Copia nel file e salvare il file come Filename.cer.

  4. Al prompt dei comandi eseguire il comando seguente per determinare se il certificato di comunicazione del servizio è valido:

    Console
    Run 'Certutil -verify -urlfetch certificate.CER > cert_cerification.txt'
    
  5. Aprire il file di output creato sopra "cert_verification.txt".

  6. Passare alla fine del file e verificare se include quanto segue per un test di revoca riuscito:

    Controllo di revoca del certificato foglia superato
    CertUtil: -verify comando completato correttamente.

  7. Se il file indica che i controlli di revoca non sono riusciti o che il server di revoca è offline, controllare il log per determinare quale certificato nella catena di certificati non è stato possibile verificare.

    Verificare se un percorso AIA o CDP non è riuscito. In uno scenario in cui vengono specificati più percorsi in un tipo di file, entrambi i percorsi devono essere contrassegnati come verificati.

    ---------------- certificato AIA ----------------
    Ora "Certificato verificato (0)": 0
    [0.0] http://www.contoso.com/pki/mswww(6).crt

    Ora "AIA" non riuscita: 0
    Errore durante il recupero dell'URL: impossibile risolvere il nome del server o l'indirizzo 0x80072ee7 (WIN32: 12007)
    http://corppki/aia/mswww(6).crt

    ---------------- certificato CDP ----------------
    Ora "CRL di base (5a)" verificata: 0
    [0.0] http://mscrl.contoso.com/pki/crl/mswww(6).crl

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

    Ora "CDP" non riuscita: 0
    Errore durante il recupero dell'URL: impossibile risolvere il nome del server o l'indirizzo 0x80072ee7 (WIN32: 12007)
    http://corppki/crl/mswww(6).crl

    La raccolta di una traccia di rete può essere utile se uno dei percorsi AIA o CDP o OCSP non è disponibile.

  8. Se la voce di log indica che il certificato viene revocato, è necessario richiedere un altro certificato valido e non revocato.

Passaggio 5: Assicurarsi che gli account del servizio ADFS dispongano dell'autorizzazione Lettura per la chiave privata dei certificati ADFS

Come controllare l'autorizzazione di lettura

  1. Nel server AD FS fare clic su Start, fare clic su Esegui, immettere MMC.exe e quindi premere INVIO.

  2. Nella finestra di dialogo Aggiungi/Rimuovi snap-in fare clic su OK.

  3. Nella finestra Radice della console fare clic su Certificati (computer locale) per visualizzare gli archivi certificati del computer.

  4. Fare clic con il pulsante destro del mouse sul servizio AD FS, scegliere Tutte le attività e quindi fare clic su Gestisci chiavi private.

  5. Controllare se l'account AD FS dispone dell'autorizzazione Lettura.

    Screenshot della finestra delle autorizzazioni che mostra che l'account AD FS dispone dell'autorizzazione Lettura.

Passaggio 6: Verificare se la funzionalità AutoCertificateRollover di ADFS è abilitata per la firma del token e la decrittografia dei certificati

Come controllare la funzionalità AutoCertificateRollover di ADFS

  • Se AutoCertificateRollover è disabilitato, i certificati di firma del token e decrittografia dei token non verranno rinnovati automaticamente. Prima della scadenza di questi certificati, assicurarsi che alla configurazione di AD FS venga aggiunto un nuovo certificato. In caso contrario, la relying party non considera attendibile il token emesso dal server AD FS.
  • Se AutoCertificateRollover è abilitato, i nuovi certificati di firma e decrittografia dei token verranno generati 20 giorni prima della scadenza dei certificati precedenti. I nuovi certificati otterranno lo stato primario cinque giorni dopo la generazione. Dopo aver generato il nuovo set di certificati, assicurarsi che le stesse informazioni vengano aggiornate sui trust della relying party e del provider di attestazioni.

Per altre informazioni sulla funzionalità AutoCertificateRollover di AD FS, vedere gli argomenti technet seguenti:

AD FS 2.0: Come abilitare e usare immediatamente AutoCertificateRollover

Passaggio 7: Aggiungere il nome del servizio federativo nel certificato SAN

Se il certificato dispone dell'attributo SAN (Subject Alternative Name) abilitato, il nome del servizio federativo deve essere aggiunto anche nella SAN del certificato, insieme ad altri nomi. Per altre informazioni, vedere Requisiti dei certificati SSL.

Passaggio 8: Controllare le autorizzazioni dell'account del servizio per il contenitore di condivisione certificati (CN=<GUID,CN>=ADFS,CN=Microsoft,CN=Program Data,DC=<Domain,DC>=<COM>)

Come controllare e correggere l'autorizzazione dell'account del servizio

  1. In un controller di dominio aprire Adsiedit.msc.

  2. Connettersi al contesto di denominazione predefinito.

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

    Nota

    In questo nome del contenitore i parametri tra parentesi quadre rappresentano i valori effettivi. Un esempio di GUID è "62b8a5cb-5d16-4b13-b616-06caea706ada".

  4. Fare clic con il pulsante destro del mouse sul GUID e quindi scegliere Proprietà. Se sono presenti più GUID, seguire questa procedura:

    1. Avviare Windows PowerShell nel server che esegue il servizio AD FS.

    2. Esegui questo comando:

      PowerShell
      Add-PSSnapin microsoft.adfs.powershellGet-ADFSProperties
      
    3. Individuare il GUID del servizio AD FS in esecuzione in CertificateShareingContainer.

  5. Assicurarsi che l'account del servizio ADFS disponga delle autorizzazioni Lettura, Scrittura e "Crea tutti gli oggetti figlio" concesse a questo oggetto e a tutti gli oggetti discendenti.

Passaggio 9: Controllare i provider di attestazioni e le relying party per gli aggiornamenti dei certificati

Se i certificati di firma del token e decrittografia dei token sono stati modificati, assicurarsi che i provider di attestazioni e le relying party vengano aggiornati in modo da avere i nuovi certificati. Se i provider di attestazioni e le relying party non vengono aggiornati, non possono considerare attendibile il servizio AD FS.

  • Dopo aver apportato la modifica, condividere il Federationmetadata.xml con il provider di attestazioni e la relying party.
  • Il provider di attestazioni e la relying party potrebbero richiedere solo che i nuovi certificati di firma e decrittografia dei token (senza una chiave privata) vengano aggiornati nella relazione di trust federativa alla fine.

Passaggio 10: Verificare la presenza di una richiesta e una risposta firmati dal provider di attestazioni o dalla relying party

La richiesta e la risposta firmate potrebbero essere ricevute dal server AD FS dal provider di attestazioni o dalla relying party. In questo scenario, il server AD FS può verificare la validità del certificato usato per la firma e l'esito negativo. AD FS controlla inoltre la validità del certificato correlato alla relying party usata per inviare un token crittografato al server AD FS.

Scenari

  • AD FS 2.0 riceve una richiesta SAML-P firmata inviata da una relying party.

    Nota

    La richiesta di firma delle richieste di accesso è un'opzione configurabile. Per impostare questo requisito per un trust della relying party, usare il parametro RequireSignedSamlRequests insieme al cmdlet Set-ADFSRelyingPartyTrust.

  • AD FS 2.0 riceve una richiesta di disconnessione SAML firmata dalla relying party. In questo scenario, la richiesta di disconnessione deve essere firmata.

  • AD FS 2.0 riceve una richiesta di disconnessione da un provider di attestazioni e crittografa una richiesta di disconnessione per la relying party. In questo scenario, il provider di attestazioni avvia la disconnessità.

  • AD FS 2.0 rilascia un token crittografato per una relying party.

  • AD FS 2.0 riceve un token emesso da un provider di attestazioni.

  • AD FS 2.0 riceve una richiesta di disconnessione SAML firmata da un provider di attestazioni. In questo scenario, la richiesta di disconnessione deve essere firmata.

Cosa verificare per risolvere il problema

  • Assicurarsi che il certificato di firma del provider di attestazioni sia valido e non sia stato revocato.

  • Assicurarsi che AD FS 2.0 possa accedere all'elenco di revoche di certificati se l'impostazione di revoca non specifica "nessuno" o un'impostazione "solo cache".

    Nota

    È possibile usare i cmdlet di Windows PowerShell per AD FS 2.0 per configurare le impostazioni di revoca seguenti:

    • Parametro SigningCertificateRevocationCheck del cmdlet Set-ADFSClaimsProviderTrust o Set-ADFSRelyingPartyTrust
    • EncryptionCertificateRevocationCheck parametro del cmdlet Set-ADFSRelyingPartyTrust o Set-ADFSClaimsProviderTrust

Per altre informazioni, vedere Risoluzione dei problemi relativi ai certificati con AD FS 2.0.