Im Zusammenhang mit meinem Enterprise-Projekt (nur Intranet) überprüfen, stieß ich auf eine Frage mit der Überprüfung von Zertifikaten .net System.Security.Cryptography.X509Certificates
Erstellen und x509-Zertifikate in .Net
Schritt 1: ein Zertifikat Wurzel Erstellen
makecert
Verwenden sie ein Stammzertifikat und installieren sie sie in die 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
erstellen
Schritt 2: ein Zertifikat erstellen und es mit dem Root-Zertifikat signieren
Verwenden makecert
ein Zertifikat zu erstellen, unterschreibt mit dem Root-Zertifikat und installieren Sie es auf den Trusted Publishers
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 das C# -Codebeispiel zum Überprüfen der Zertifikate:
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, muß ich die Kette zu überprüfen und die letzten in der Kette zu überprüfen, unter der Annahme, dass dies ein Root-Zertifikat?
Gibt es einen besseren Weg, es zu tun?
Beachten Sie, dass dies X509-Zertifikate in einer PKI-Infrastruktur beschreibt, die sich ein wenig von einem "Web-of-Trust" unterscheidet, wie es z. PGP. –