2012-06-27 10 views
22

Mi sono rilasciato un certificato di firma del codice da un server di certificati. Ho anche emesso il certificato radice dallo stesso server certificato. Il certificato di origine esiste negli archivi di certificati Utente corrente e Computer locale all'interno della cartella Autorità di certificazione fonti attendibili. Ho successo firmato una DLL utilizzando la procedura guidata SignTool.exe:Perché il mio certificato radice non è sicuro?

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\signtool.exe" signwizard <MyDLLName>.dll 

Tuttavia, quando provo a verificare la mia DLL, non riesce la verifica con il seguente errore:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\signtool.exe" verify <MyDLLName>.dll 
SignTool Error: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider. 
SignTool Error: File not valid: <MyDLLName>.dll 

Perché questo sta succedendo? Pensavo che avere il certificato di root nella cartella Autorità di certificazione fonti attendibili avrebbe verificato la DLL.

risposta

49

Nel comando di verifica aggiungere l'opzione/pa per indicare di utilizzare il criterio di autenticazione di autenticazione predefinito anziché il criterio di verifica dei driver di Windows, il che significa che verrà esaminato gli archivi di certificati anziché il gruppo limitato di CA. piloti.

Guardate qui per ulteriori opzioni: http://msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.90).aspx

+0

Ciao Kevin, Sto cercando di chiamare un servizio WCF ospitato da auto firmato certificato SSL, sarà l'installazione di SSL a livello locale con il lavoro l'opzione di cui sopra? Puoi inviare il comando completo da usare. Ho entrambi i file .pfx e .cer, ma ASP.net non è in grado di fidarsi del provider SSL. –

+0

@SanjayZalke È possibile utilizzare gli strumenti di gestione dei certificati di Windows per installare il certificato nella cartella CA Trusted Root del computer locale. È possibile avviarlo tramite mmc.exe e aggiungere lo snap-in del certificato. –

+5

Una nota importante qui è che se si sta facendo questo con un KERNEL DRIVER (.sys), questo non funzionerà, perché i driver del kernel devono essere considerati attendibili dal Certificato Root di Microsoft. La verifica stessa passerà se si aggiunge l'opzione/pa menzionata, ma il driver non verrà effettivamente caricato, verrà comunque visualizzato errore driver non firmato. Durante l'avvio il kernel non ha accesso all'archivio certificati completo in modo che possa esaminare solo il set limitato di trust di Microsoft con i driver di CA. – Syclone0044

Problemi correlati