X509ChainPolicy Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt die Kettenrichtlinie dar, die beim Erstellen einer X509-Zertifikatkette angewendet werden soll. Diese Klasse kann nicht vererbt werden.
public ref class X509ChainPolicy sealed
public sealed class X509ChainPolicy
type X509ChainPolicy = class
Public NotInheritable Class X509ChainPolicy
- Vererbung
-
X509ChainPolicy
Beispiele
Im folgenden Beispiel wird der persönliche Zertifikatspeicher des aktuellen Benutzers geöffnet, der Benutzer kann ein Zertifikat auswählen und dann Zertifikat- und Zertifikatketteinformationen in die Konsole schreiben. Die Ausgabe hängt vom ausgewählten Zertifikat ab.
using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.IO;
class TestX509Chain
{
static void Main(string[] args)
{
//Create new X509 store from local certificate store.
X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite);
//Output store information.
Console.WriteLine ("Store Information");
Console.WriteLine ("Number of certificates in the store: {0}", store.Certificates.Count);
Console.WriteLine ("Store location: {0}", store.Location);
Console.WriteLine ("Store name: {0} {1}", store.Name, Environment.NewLine);
//Put certificates from the store into a collection so user can select one.
X509Certificate2Collection fcollection = (X509Certificate2Collection)store.Certificates;
X509Certificate2Collection collection = X509Certificate2UI.SelectFromCollection(fcollection, "Select an X509 Certificate", "Choose a certificate to examine.", X509SelectionFlag.SingleSelection);
X509Certificate2 certificate = collection[0];
X509Certificate2UI.DisplayCertificate(certificate);
//Output chain information of the selected certificate.
X509Chain ch = new X509Chain();
ch.ChainPolicy.RevocationMode = X509RevocationMode.Online;
ch.Build (certificate);
Console.WriteLine ("Chain Information");
Console.WriteLine ("Chain revocation flag: {0}", ch.ChainPolicy.RevocationFlag);
Console.WriteLine ("Chain revocation mode: {0}", ch.ChainPolicy.RevocationMode);
Console.WriteLine ("Chain verification flag: {0}", ch.ChainPolicy.VerificationFlags);
Console.WriteLine ("Chain verification time: {0}", ch.ChainPolicy.VerificationTime);
Console.WriteLine ("Chain status length: {0}", ch.ChainStatus.Length);
Console.WriteLine ("Chain application policy count: {0}", ch.ChainPolicy.ApplicationPolicy.Count);
Console.WriteLine ("Chain certificate policy count: {0} {1}", ch.ChainPolicy.CertificatePolicy.Count, Environment.NewLine);
//Output chain element information.
Console.WriteLine ("Chain Element Information");
Console.WriteLine ("Number of chain elements: {0}", ch.ChainElements.Count);
Console.WriteLine ("Chain elements synchronized? {0} {1}", ch.ChainElements.IsSynchronized, Environment.NewLine);
foreach (X509ChainElement element in ch.ChainElements)
{
Console.WriteLine ("Element issuer name: {0}", element.Certificate.Issuer);
Console.WriteLine ("Element certificate valid until: {0}", element.Certificate.NotAfter);
Console.WriteLine ("Element certificate is valid: {0}", element.Certificate.Verify ());
Console.WriteLine ("Element error status length: {0}", element.ChainElementStatus.Length);
Console.WriteLine ("Element information: {0}", element.Information);
Console.WriteLine ("Number of element extensions: {0}{1}", element.Certificate.Extensions.Count, Environment.NewLine);
if (ch.ChainStatus.Length > 1)
{
for (int index = 0; index < element.ChainElementStatus.Length; index++)
{
Console.WriteLine (element.ChainElementStatus[index].Status);
Console.WriteLine (element.ChainElementStatus[index].StatusInformation);
}
}
}
store.Close();
}
}
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
Imports System.IO
Class TestX509Chain
Shared Sub Main(ByVal args() As String)
'Create new X509 store from local certificate store.
Dim store As New X509Store("MY", StoreLocation.CurrentUser)
store.Open(OpenFlags.OpenExistingOnly Or OpenFlags.ReadWrite)
'Output store information.
Console.WriteLine("Store Information")
Console.WriteLine("Number of certificates in the store: {0}", store.Certificates.Count)
Console.WriteLine("Store location: {0}", store.Location)
Console.WriteLine("Store name: {0} {1}", store.Name, Environment.NewLine)
'Put certificates from the store into a collection so user can select one.
Dim fcollection As X509Certificate2Collection = CType(store.Certificates, X509Certificate2Collection)
Dim collection As X509Certificate2Collection = X509Certificate2UI.SelectFromCollection(fcollection, "Select an X509 Certificate", "Choose a certificate to examine.", X509SelectionFlag.SingleSelection)
Dim certificate As X509Certificate2 = collection(0)
X509Certificate2UI.DisplayCertificate(certificate)
'Output chain information of the selected certificate.
Dim ch As New X509Chain()
ch.ChainPolicy.RevocationMode = X509RevocationMode.Online
ch.Build(certificate)
Console.WriteLine("Chain Information")
Console.WriteLine("Chain revocation flag: {0}", ch.ChainPolicy.RevocationFlag)
Console.WriteLine("Chain revocation mode: {0}", ch.ChainPolicy.RevocationMode)
Console.WriteLine("Chain verification flag: {0}", ch.ChainPolicy.VerificationFlags)
Console.WriteLine("Chain verification time: {0}", ch.ChainPolicy.VerificationTime)
Console.WriteLine("Chain status length: {0}", ch.ChainStatus.Length)
Console.WriteLine("Chain application policy count: {0}", ch.ChainPolicy.ApplicationPolicy.Count)
Console.WriteLine("Chain certificate policy count: {0} {1}", ch.ChainPolicy.CertificatePolicy.Count, Environment.NewLine)
'Output chain element information.
Console.WriteLine("Chain Element Information")
Console.WriteLine("Number of chain elements: {0}", ch.ChainElements.Count)
Console.WriteLine("Chain elements synchronized? {0} {1}", ch.ChainElements.IsSynchronized, Environment.NewLine)
Dim element As X509ChainElement
For Each element In ch.ChainElements
Console.WriteLine("Element issuer name: {0}", element.Certificate.Issuer)
Console.WriteLine("Element certificate valid until: {0}", element.Certificate.NotAfter)
Console.WriteLine("Element certificate is valid: {0}", element.Certificate.Verify())
Console.WriteLine("Element error status length: {0}", element.ChainElementStatus.Length)
Console.WriteLine("Element information: {0}", element.Information)
Console.WriteLine("Number of element extensions: {0}{1}", element.Certificate.Extensions.Count, Environment.NewLine)
If ch.ChainStatus.Length > 1 Then
Dim index As Integer
For index = 0 To element.ChainElementStatus.Length
Console.WriteLine(element.ChainElementStatus(index).Status)
Console.WriteLine(element.ChainElementStatus(index).StatusInformation)
Next index
End If
Next element
store.Close()
End Sub
End Class
Hinweise
Jedes X509Certificate2 Objekt kann über eine X509ChainPolicy Eigenschaft verfügen, die die richtlinie angibt, die im Überprüfungsprozess verwendet werden soll. Beachten Sie, dass nur X509Certificate2 Objekte ein X509ChainPolicy Objekt erstellen können.
Konstruktoren
| Name | Beschreibung |
|---|---|
| X509ChainPolicy() |
Initialisiert eine neue Instanz der X509ChainPolicy-Klasse. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| ApplicationPolicy |
Ruft eine Auflistung von Objektbezeichnern (OIDs) ab, die angibt, welche Anwendungsrichtlinien oder erweiterte Schlüsselverwendungen (ENHANCED Key Usages, EKUs) das Zertifikat unterstützen muss. |
| CertificatePolicy |
Ruft eine Auflistung von Objektbezeichnern (OIDs) ab, die angeben, welche Zertifikatrichtlinien das Zertifikat unterstützen muss. |
| CustomTrustStore |
Stellt eine Auflistung von Zertifikaten dar, die die Standardzertifikatvertrauensstellung ersetzen. |
| DisableCertificateDownloads |
Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob das Kettenmodul die AIA-Erweiterung (Authority Information Access) verwenden kann, um unbekannte Ausstellerzertifikate zu finden. |
| ExtraStore |
Ruft ein Objekt ab, das eine zusätzliche Auflistung von Zertifikaten darstellt, die durch das Verkettungsmodul durchsucht werden können, wenn eine Zertifikatkette überprüft wird. |
| RevocationFlag |
Dient zum Abrufen oder Festlegen von Werten für X509-Sperrkennzeichnungen. |
| RevocationMode |
Dient zum Abrufen oder Festlegen von Werten für den X509-Zertifikatsperrmodus. |
| TrustMode |
Der Modus, der die Stammvertrauensstellung zum Erstellen der Zertifikatkette bestimmt. |
| UrlRetrievalTimeout |
Ruft den maximalen Zeitraum ab, der während der Onlinesperrüberprüfung oder beim Herunterladen der Zertifikatsperrliste (Certificate Revocation List, CRL) aufgewendet werden soll, oder legt diesen fest. Ein Wert von Zero Bedeutet, dass es keine Grenzen gibt. |
| VerificationFlags |
Ruft Überprüfungskennzeichnungen für das Zertifikat ab. |
| VerificationTime |
Ruft die Zeit ab, für die die Kette überprüft werden soll, oder legt sie fest. |
| VerificationTimeIgnored |
Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob die Kettenüberprüfung beim Erstellen einer X.509-Zertifikatkette oder die aktuelle Systemzeit verwendet VerificationTime werden soll. |
Methoden
| Name | Beschreibung |
|---|---|
| Clone() |
Erstellt eine neue Kettenrichtlinieninstanz mit den gleichen Einstellungen wie diese Instanz. |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| Reset() |
Setzt die X509ChainPolicy Member auf ihre Standardwerte zurück. |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |