2010-07-14 18 views
18

Sono in esecuzione nel seguente errore quando si tenta di analizzare il mio token:Impossibile trovare un certificato unico che corrisponde ai criteri

Property name: 'certificateReference' 
Error: 'ID1025: Cannot find a unique certificate that matches the criteria. 
StoreName: 'My' 
StoreLocation: 'LocalMachine' 
X509FindType: 'FindByThumbprint' 
FindValue: '‎41a8a59e537d4a00a8c4fa8dc2522388dbd13d27' 

La sezione nel mio web.config è:

<serviceCertificate>` 
    <certificateReference x509FindType="FindByThumbprint" findValue="‎41A8A59E537D4A00A8C4FA8DC2522388DBD13D27" storeLocation="LocalMachine" storeName="My" /> 
</serviceCertificate> 

I hanno confermato che il certificato esiste in IIS, MMC e Internet Explorer e hanno provato a cambiare il tipo di ricerca con oggetto senza successo. Ho anche provato l'identificazione digitale in maiuscolo, minuscolo, con spazi e senza spazi. Ho anche confermato esiste il certificato LocalMachine \ My con i seguenti risultati:

Matching certificate: 
CN=kelly-pc 

conti aggiuntivi e gruppi con accesso alla chiave privata sono:

NT AUTHORITY\SYSTEM 
BUILTIN\Administrators 
KELLY-PC\Kelly 
BUILTIN\IIS_IUSRS 

risposta

1

Probabilmente si utilizza certificato auto-rilasciato e si dovrebbe aggiungere anche la linea

<issuedTokenAuthentication allowUntrustedRsaIssuers="true" /> 

all'interno <serviceCertificate> che dovrebbe utilizzare insieme con <certificateReference>.

+0

Avevo aggiunto il certificato nella sezione dei provider di fiducia e non era ancora trovato. In ogni caso ho creato un'altra soluzione semplice con nuovi certificati autoprodotti e il progetto ha funzionato! – Kjaneb

+5

E questa soluzione era? Che ne dici di aiutare la comunità quando puoi ..../brontolare – VulgarBinary

+0

Sono solo io, o non è affatto chiaro? Puoi per favore pubblicare un frammento XML più grande che mostri meglio questo? – Bryan

5

Prima di tutto il consiglio "issuedTokenAuthentication" di Oleg non ha funzionato per me poiché la mia applicazione è un MVC asp.net. Presumo che questo elemento non sia supportato nell'applicazione asp.net MVC, ma potrebbe essere supportato nella configurazione del servizio WCF.

Dopo molte ore di lotta con questo errore su localhost e altri errori come ID1024 ho dovuto annullare alcune cose che avevo fatto seguendo consigli come dare a tutti leggere tutti i file all'interno di% ALLUSERSPROFILE% \ Microsoft \ Crypto \ RSA \ MachineKeys come per il blog this (ho letto sull'intera cartella MachineKeys che non era una buona idea!). In questo modo, tutte le concessioni alle chiavi private hanno smesso di funzionare tramite la console MMC!

mia soluzione era quella di creare un nuovo certificato auto firmato secondo le istruzioni da here

Poi ho fatto un'importazione fresca del certificato appena creato al negozio corretto e ha dato l'utente che esegue le applicazioni web leggono i diritti alla chiave privata. Il mio problema era con il certificato che usavo prima del quale è stato firmato sé, deve essere stato qualcosa che non va ..

Questa sezione è stata assolutamente necessario sul lato client:

<serviceCertificate> 
    <certificateReference x509FindType="FindByThumbprint" findValue="‎41A8A59E537D4A00A8C4FA8DC2522388DBD13D27" storeLocation="LocalMachine" storeName="My" /> 
</serviceCertificate> 

Quando si tratta di certificati questo è anche un buon consiglio da tenere a mente:

se prima importare il certificato nell'archivio PERSONALE pER LO SVILUPPO, quindi importarlo in negozio MACCHINA per la distribuzione, la chiave privata rimarrà nella PERSONALE NEGOZIO DOVE SO NESSUN ACCOUNT DI SERVIZIO PU CAN UTILIZZARLO ANCHE SE SONO STATI CONCESSI PERMESSO.

E infine lo strumento FindPrivateKey.exe è stata molto utile per individuare il file della chiave privata reale e per aiutare a risolvere il problema, può essere scaricato da here, con buone istruzioni here.

ho notato durante l'eliminazione dei certificati tramite la console MMC ho dovuto rimuovere il file della chiave privata manualmente dal

C: \ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys

se la cancellazione dal negozio localMachine e da

C: \ Users [nome utente] \ AppData \ Roaming \ Microsoft \ Crypto \ RSA \ S-1-5-21-2106337540-114255811-1274951907-65121

se la cancellazione dal negozio CurrentUser

+0

questo è stato utile, utilizzando lo strumento FindPrivateKey.exe con una "identificazione personale" per trovare il file e quindi emettere i diritti per l'account "Servizio locale" su quel file. Dato che era l'utente, il mio pool di app era in esecuzione! – ScottCate

+0

Questo mi ha risparmiato ore di risoluzione dei problemi. Grazie! Stavo usando IISExpress, quindi ho dovuto aggiungere ($ machinename \ IIS_IUSRS) all'ACL per il file una volta che sono riuscito a trovarlo usando l'applicazione FindPrivateKey. – wislon

23

Ho avuto esattamente lo stesso problema. Copiando la mia sezione web.config in Notepad ++ (non notepad) ho visto un personaggio invisibile:

<serviceCertificate> 
     <certificateReference x509FindType="FindByThumbprint" findValue="?e36df2f3e351a25adf8ffb6ad3619f10238f0317" /> 
</serviceCertificate> 

cancellare questo carattere e dovrebbe funzionare.

Senza di Notepad ++ è sufficiente premere backspace davanti al valore di identificazione personale (cercando di eliminare il "char.

+0

questo era .... che tiro lungo e lo hai inchiodato. Grazie! – ScottCate

+0

Il modo migliore è visualizzare il file in un HexEditor come HxD. Stavo usando Notepad ++ e non mostrava caratteri "invisibili". HxD ha ... Il problema arriva quando si copia/incolla dal certificato in IIS. Meglio inserirla piuttosto che copiarla. –

+6

Utilizzo di Notepad ++ Non ho visto i caratteri in più fino a quando non ho modificato la codifica da UTF-8 a ANSI – BozoJoe

3

E 'stato un personaggio invisibile di fronte l'identificazione personale anche per me. L'istruzione standard di Microsoft per ottenere la thumbprint serve per aprire le proprietà del certificato, copiare la stringa di byte con codifica esadecimale e rimuovere gli spazi intermedi. Immagino che questa procedura di copia aggiunga alcuni caratteri invisibili all'inizio della stringa, anche questi caratteri devono essere rimossi o i thumbprint Sapevo che qualcosa doveva essere sbagliato con l'identificazione digitale quando ho trovato che ero in grado di caricare il certificato con il suo nome.

0

Quindi questo errore è apparso sul mio schermo questa mattina. Sto usando una macchina di sviluppo, quindi stavo usando un certificato autofirmato (IIS). Dopo aver installato Visual Studio 2015 RC, anche IIS è stato aggiornato. Risulta che ha rotto il trust di catena, perché il certificato di root è stato rimosso o non valido (IIS Express

Probabilmente una cosa ovvia da fare, ma assicurarsi che il certificato selezionato sia ancora valido, incluso ogni salto nella catena.

0

su un server particolare ho dovuto aggiungere alla autorità di certificazione fonti attendibili e in aggiunta al personale per il codice per riconoscerlo.

Sulla mia macchina locale e altri server ha funzionato bene nel negozio Personal solo

Problemi correlati