In connessione con il mio progetto aziendale (intranet solo) mi sono imbattuto in una domanda con la verifica dei certificati utilizzando .net System.Security.Cryptography.X509Certificates
creare e verificare i certificati X509 in .Net
Fase 1: Creazione di un certificato di origine
Usa makecert
per creare un certificato di origine e installarlo nelle autorità di certificazione fonti attendibili
makecert -r -pe -n "CN=Test Labs (CA)" -ss CA -sr CurrentUser -a sha256 -cy authority -sky signature -sv TestLabCA.pvk TestLabCA.cer
pvk2pfx -pvk TestLabCA.pvk -spc TestLabCA.cer -pfx TestLabCA.pfx
Fase 2: Creazione di un certificato e firmare con il certificato di origine
Usa makecert
per creare un certificato, firmarlo con il certificato di origine e installarlo alle autori attendibili
makecert -pe -n "CN=Test Labs (SPC)" -a sha256 -cy end -sky signature -ic TestLabCA.cer -iv TestLabCA.pvk -sv TestLabSPC.pvk TestLabSPC.cer
pvk2pfx -pvk TestLabSPC.pvk -spc TestLabSPC.cer -pfx TestLabSPC.pfx
Passaggio 3: Verifica nel codice
Questo è l'esempio di codice C# per verificare i certificati:
X509Certificate2 rootCertificate = new X509Certificate2("TestLabCA.cer");
X509Certificate2 certificate = new X509Certificate2("TestLabSPC.cer");
// will return true
Console.WriteLine("{0}, verified = {1}", rootCertificate.GetName(), rootCertificate.Verify());
// will return false
Console.WriteLine("{0}, verified = {1}", certificate.GetName(), certificate.Verify());
// validate the chain
var chain = new X509Chain();
chain.Build(certificate);
Console.WriteLine("{0}, verified root of chain = {1}", certificate.GetName(), chain.ChainElements[chain.ChainElements.Count-1].Certificate.Verify());
Domanda:
Se voglio verificare il certificato, devo controllare la catena e verificare l'ultimo della catena, partendo dal presupposto che si tratta di un certificato di origine?
C'è un modo migliore per farlo?
Si noti che questo descrive i certificati X509 in un'infrastruttura PKI, che è leggermente diversa da un "web-of-trust" come utilizzato da ad es. PGP. –