Erstellen und überprüfen von X. 509 Zertifikaten in .Net

In Verbindung mit meinem enterprise-Projekt (intranet-nur) stieß ich auf eine Frage, die mit der Verifizierung von Zertifikaten verwenden .net System.Security.Cryptography.X509Certificates

Schritt 1: Erstellung des root-Zertifikats

Verwenden makecert für die Erstellung eines root-Zertifikat und installieren Sie es in der Vertrauenswürdige Stammzertifizierungsstellen

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

Schritt 2: ein Zertifikat Erstellen und signieren Sie es mit dem root-Zertifikat

Verwenden makecert um ein Zertifikat zu erstellen, melden Sie es mit dem root-Zertifikat und installieren Sie es, um die "Vertrauenswürdige Herausgeber"

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

Schritt 3: Überprüfen Sie im code

Dies ist die C# - Codebeispiel, um die Zertifikate zu überprüfen:

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());

Frage:

Wenn ich will, um das Zertifikat zu überprüfen, muss ich prüfen Sie die Kette und überprüfen Sie die letzten in der Kette, vorausgesetzt, es ist ein root-Zertifikat?

Gibt es einen besseren Weg, es zu tun?

InformationsquelleAutor achibus | 2013-02-13
Schreibe einen Kommentar