X509ChainPolicy Klasse

Definition

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)

Gilt für: