X509Store Classe

Definizione

Rappresenta un archivio X.509, ovvero un archivio fisico in cui vengono memorizzati e gestiti i certificati. La classe non può essere ereditata.

C#
public sealed class X509Store : IDisposable
C#
public sealed class X509Store
Ereditarietà
X509Store
Implementazioni

Esempio

Questa sezione contiene due esempi. Il primo esempio illustra come aprire gli archivi X.509 standard e elencare il numero di certificati in ogni.

Il secondo esempio illustra come aggiungere e rimuovere singoli certificati e intervalli di certificati.

Esempio 1

Questo esempio tenta di aprire ogni archivio standard in ogni posizione standard nel computer corrente. Stampa un riepilogo che mostra se ogni archivio esiste e, in tal caso, il numero di certificati che contiene.

L'esempio crea un X509Store oggetto per ogni combinazione di nome standard e posizione standard. Chiama il metodo con il flag, che apre l'archivio OpenOpenFlags.OpenExistingOnly fisico solo se esiste già. Se l'archivio fisico esiste, nell'esempio vengono usate le Nameproprietà , Locatione Certificates per visualizzare il numero di certificati nell'archivio.

C#
using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

public class Example
{
    static void Main()
    {
        Console.WriteLine("\r\nExists Certs Name and Location");
        Console.WriteLine("------ ----- -------------------------");

        foreach (StoreLocation storeLocation in (StoreLocation[])
            Enum.GetValues(typeof(StoreLocation)))
        {
            foreach (StoreName storeName in (StoreName[])
                Enum.GetValues(typeof(StoreName)))
            {
                X509Store store = new X509Store(storeName, storeLocation);

                try
                {
                    store.Open(OpenFlags.OpenExistingOnly);

                    Console.WriteLine("Yes    {0,4}  {1}, {2}",
                        store.Certificates.Count, store.Name, store.Location);
                }
                catch (CryptographicException)
                {
                    Console.WriteLine("No           {0}, {1}",
                        store.Name, store.Location);
                }
            }
            Console.WriteLine();
        }
    }
}

/* This example produces output similar to the following:

Exists Certs Name and Location
------ ----- -------------------------
Yes       1  AddressBook, CurrentUser
Yes      25  AuthRoot, CurrentUser
Yes     136  CA, CurrentUser
Yes      55  Disallowed, CurrentUser
Yes      20  My, CurrentUser
Yes      36  Root, CurrentUser
Yes       0  TrustedPeople, CurrentUser
Yes       1  TrustedPublisher, CurrentUser

No           AddressBook, LocalMachine
Yes      25  AuthRoot, LocalMachine
Yes     131  CA, LocalMachine
Yes      55  Disallowed, LocalMachine
Yes       3  My, LocalMachine
Yes      36  Root, LocalMachine
Yes       0  TrustedPeople, LocalMachine
Yes       1  TrustedPublisher, LocalMachine

 */

Esempio 2

Questo esempio apre un archivio certificati X.509, aggiunge ed elimina i certificati e quindi chiude l'archivio. Si presuppone che siano presenti tre certificati da aggiungere e rimuovere da un archivio locale.

C#
using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.IO;

public class X509store2
{
    public static void Main (string[] args)
    {
        //Create new X509 store called teststore from the local certificate store.
        X509Store store = new X509Store ("teststore", StoreLocation.CurrentUser);
        store.Open (OpenFlags.ReadWrite);
        X509Certificate2 certificate = new X509Certificate2 ();

        //Create certificates from certificate files.
        //You must put in a valid path to three certificates in the following constructors.
        X509Certificate2 certificate1 = new X509Certificate2 ("c:\\mycerts\\*****.cer");
        X509Certificate2 certificate2 = new X509Certificate2 ("c:\\mycerts\\*****.cer");
        X509Certificate2 certificate5 = new X509Certificate2 ("c:\\mycerts\\*****.cer");

        //Create a collection and add two of the certificates.
        X509Certificate2Collection collection = new X509Certificate2Collection ();
        collection.Add (certificate2);
        collection.Add (certificate5);

        //Add certificates to the store.
        store.Add (certificate1);
        store.AddRange (collection);

        X509Certificate2Collection storecollection = (X509Certificate2Collection)store.Certificates;
        Console.WriteLine ("Store name: {0}", store.Name);
        Console.WriteLine ("Store location: {0}", store.Location);
        foreach (X509Certificate2 x509 in storecollection)
        {
            Console.WriteLine("certificate name: {0}",x509.Subject);
        }

        //Remove a certificate.
        store.Remove (certificate1);
        X509Certificate2Collection storecollection2 = (X509Certificate2Collection)store.Certificates;
        Console.WriteLine ("{1}Store name: {0}", store.Name, Environment.NewLine);
        foreach (X509Certificate2 x509 in storecollection2)
        {
            Console.WriteLine ("certificate name: {0}", x509.Subject);
        }

        //Remove a range of certificates.
        store.RemoveRange (collection);
        X509Certificate2Collection storecollection3 = (X509Certificate2Collection)store.Certificates;
        Console.WriteLine ("{1}Store name: {0}", store.Name, Environment.NewLine);
        if (storecollection3.Count == 0)
        {
            Console.WriteLine ("Store contains no certificates.");
        }
        else
        {
            foreach (X509Certificate2 x509 in storecollection3)
            {
                Console.WriteLine ("certificate name: {0}", x509.Subject);
            }
        }

        //Close the store.
        store.Close ();
    }	
}

Commenti

Usare questa classe per usare un archivio X.509.

Importante

A partire da .NET Framework 4.6, questo tipo implementa l'interfaccia IDisposable . Dopo aver utilizzato il tipo, è necessario eliminarlo direttamente o indirettamente. Per eliminare direttamente il tipo, chiamare il metodo Dispose in un blocco try/catch. Per eliminarlo indirettamente, utilizzare un costrutto di linguaggio come ad esempio using in C# o Using in Visual Basic. Per altre informazioni, vedere la sezione "Uso di un oggetto che implementa IDisposable" nell'argomento relativo all'interfaccia IDisposable.

Per le app destinate a .NET Framework 4.5.2 e versioni precedenti, la X509Store classe non implementa l'interfaccia IDisposable e pertanto non dispone di un Dispose metodo.

Costruttori

X509Store()

Inizializza una nuova istanza della classe X509Store usando l'archivio dei certificati personali dell'utente corrente.

X509Store(IntPtr)

Inizializza una nuova istanza della classe X509Store usando un handle Intptr per un archivio HCERTSTORE.

X509Store(StoreLocation)

Inizializza una nuova istanza della classe X509Store usando l'archivio dei certificati personali del valore del percorso dell'archivio specificato.

X509Store(StoreName)

Inizializza una nuova istanza della classe X509Store usando il nome dell'archivio specificato degli archivi certificati dell'utente corrente.

X509Store(StoreName, StoreLocation)

Inizializza una nuova istanza della classe X509Store usando i valori di StoreName e StoreLocation specificati.

X509Store(StoreName, StoreLocation, OpenFlags)

Inizializza una nuova istanza della classe X509Store usando il nome dell'archivio e i valori del percorso dell'archivio specificati e la apre usando i flag specificati.

X509Store(String)

Inizializza una nuova istanza della classe X509Store usando il nome di archivio specificato.

X509Store(String, StoreLocation)

Inizializza una nuova istanza della classe X509Store usando un nome dell'archivio e un percorso dell'archivio specificati.

X509Store(String, StoreLocation, OpenFlags)

Inizializza una nuova istanza della classe X509Store usando il nome dell'archivio e i valori del percorso dell'archivio specificati e la apre usando i flag specificati.

Proprietà

Certificates

Restituisce una raccolta di certificati presenti in un archivio certificati X.509.

IsOpen

Ottiene un valore che indica se l'istanza è connessa a un archivio certificati aperto.

Location

Ottiene la posizione dell'archivio certificati X.509.

Name

Ottiene il nome dell'archivio certificati X.509.

StoreHandle

Ottiene un handle IntPtr per un archivio HCERTSTORE.

Metodi

Add(X509Certificate2)

Aggiunge un certificato a un archivio certificati X.509.

AddRange(X509Certificate2Collection)

Aggiunge una raccolta di certificati a un archivio certificati X.509.

Close()

Chiude un archivio certificati X.509.

Dispose()

Rilascia le risorse usate da questo oggetto X509Store.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
Open(OpenFlags)

Apre un archivio certificati X.509 o ne crea uno nuovo, a seconda delle impostazioni del flag OpenFlags.

Remove(X509Certificate2)

Rimuove un certificato da un archivio certificati X.509.

RemoveRange(X509Certificate2Collection)

Rimuove una raccolta di certificati da un archivio certificati X.509.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Prodotto Versioni
.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