X509Chain Classe

Définition

Représente un moteur de génération de chaîne pour les certificats X509Certificate2.

C#
public class X509Chain : IDisposable
C#
public class X509Chain
Héritage
X509Chain
Implémente

Exemples

L’exemple de code suivant ouvre le magasin de certificats personnel de l’utilisateur actuel, vous permet de sélectionner un certificat, puis écrit des informations sur le certificat et la chaîne de certificats dans la console. La sortie dépend du certificat que vous sélectionnez.

C#
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();
    }
}

Remarques

L’objet X509Chain a une erreur globale status appelée ChainStatus qui doit être utilisée pour la validation du certificat. Les règles régissant la validation des certificats sont complexes et il est facile de simplifier la logique de validation en ignorant l’erreur status d’un ou plusieurs des éléments impliqués. L’erreur globale status prend en compte la status de chaque élément de la chaîne.

Important

À compter de .NET Framework 4.6, ce type implémente l’interface IDisposable . Une fois que vous avez fini d’utiliser le type, vous devez le supprimer directement ou indirectement. Pour supprimer directement le type Dispose, appelez sa méthode dans un bloc try/catch. Pour la supprimer indirectement, utilisez une construction de langage telle que using (dans C#) ou Using (dans Visual Basic). Pour plus d’informations, consultez la section « Utilisation d’un objet qui implémente IDisposable » dans la rubrique de l’interface IDisposable.

Pour les applications qui ciblent .NET Framework 4.5.2 et versions antérieures, la X509Chain classe n’implémente pas l’interface IDisposable et n’a donc pas de Dispose méthode.

Constructeurs

X509Chain()

Initialise une nouvelle instance de la classe X509Chain.

X509Chain(Boolean)

Initialise une nouvelle instance de la classe X509Chain spécifiant une valeur qui indique s'il faut utiliser le contexte de l'ordinateur.

X509Chain(IntPtr)

Initialise une nouvelle instance de la classe X509Chain à l'aide d'un handle IntPtr vers une chaîne X.509.

Propriétés

ChainContext

Obtient un handle vers une chaîne X.509.

ChainElements

Obtient une collection d'objets X509ChainElement.

ChainPolicy

Obtient ou définit le X509ChainPolicy à utiliser pendant la génération d'une chaîne de certificat X.509.

ChainStatus

Obtient l'état de chaque élément d'un objet X509Chain.

SafeHandle

Obtient un handle sécurisé pour cette instance de X509Chain.

Méthodes

Build(X509Certificate2)

Génère une chaîne X.509 à l'aide de la stratégie spécifiée dans X509ChainPolicy.

Create()

Crée un objet X509Chain après avoir demandé le mappage défini dans le fichier CryptoConfig et mappe la chaîne à ce mappage.

Dispose()

Libère toutes les ressources utilisées par ce X509Chain.

Dispose(Boolean)

Libère les ressources non managées utilisées par ce X509Chain et libère éventuellement les ressources managées.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
Reset()

Supprime l'objet X509Chain actuel.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à

Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1