X509Store Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje úložiště X.509, což je fyzické úložiště, ve kterém jsou certifikáty trvalé a spravované. Tato třída se nemůže dědit.
public ref class X509Store sealed : IDisposable
public ref class X509Store sealed
public sealed class X509Store : IDisposable
public sealed class X509Store
type X509Store = class
interface IDisposable
type X509Store = class
Public NotInheritable Class X509Store
Implements IDisposable
Public NotInheritable Class X509Store
- Dědičnost
-
X509Store
- Implementuje
Příklady
Tato část obsahuje dva příklady. První příklad ukazuje, jak můžete otevřít standardní úložiště X.509 a vypsat počet certifikátů v každém z nich.
Druhý příklad ukazuje, jak můžete přidat a odebrat jednotlivé certifikáty a rozsahy certifikátů.
Příklad 1
Tento příklad se pokusí otevřít každé standardní úložiště v každém standardním umístění v aktuálním počítači. Vytiskne souhrn, který ukazuje, jestli každé úložiště existuje, a pokud ano, počet certifikátů, které obsahuje.
Příklad vytvoří X509Store objekt pro každou kombinaci standardního názvu a standardního umístění. Volá metodu Open s příznakem OpenFlags.OpenExistingOnly , který otevře fyzické úložiště pouze v případě, že již existuje. Pokud fyzické úložiště existuje, použije příklad Namevlastnosti , Locationa Certificates k zobrazení počtu certifikátů v úložišti.
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
*/
Option Strict On
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
Module Example
Sub Main()
Console.WriteLine(vbCrLf & "Exists Certs Name and Location")
Console.WriteLine("------ ----- -------------------------")
For Each storeLocation As StoreLocation In _
CType([Enum].GetValues(GetType(StoreLocation)), StoreLocation())
For Each storeName As StoreName In _
CType([Enum].GetValues(GetType(StoreName)), StoreName())
Dim store As New X509Store(StoreName, StoreLocation)
Try
store.Open(OpenFlags.OpenExistingOnly)
Console.WriteLine("Yes {0,4} {1}, {2}", _
store.Certificates.Count, store.Name, store.Location)
Catch e As CryptographicException
Console.WriteLine("No {0}, {1}", _
store.Name, store.Location)
End Try
Next
Console.WriteLine()
Next
End Sub
End Module
' 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
Příklad 2
Tento příklad otevře úložiště certifikátů X.509, přidá a odstraní certifikáty a pak toto úložiště zavře. Předpokládá se, že máte tři certifikáty, které můžete přidat do místního úložiště a odebrat z něj.
#using <System.dll>
#using <System.Security.dll>
using namespace System;
using namespace System::Security::Cryptography;
using namespace System::Security::Cryptography::X509Certificates;
using namespace System::IO;
int main()
{
//Create new X509 store called teststore from the local certificate store.
X509Store ^ store = gcnew X509Store( "teststore",StoreLocation::CurrentUser );
store->Open( OpenFlags::ReadWrite );
X509Certificate2 ^ certificate = gcnew X509Certificate2;
//Create certificates from certificate files.
//You must put in a valid path to three certificates in the following constructors.
X509Certificate2 ^ certificate1 = gcnew X509Certificate2( "c:\\mycerts\\*****.cer" );
X509Certificate2 ^ certificate2 = gcnew X509Certificate2( "c:\\mycerts\\*****.cer" );
X509Certificate2 ^ certificate5 = gcnew X509Certificate2( "c:\\mycerts\\*****.cer" );
//Create a collection and add two of the certificates.
X509Certificate2Collection ^ collection = gcnew X509Certificate2Collection;
collection->Add( certificate2 );
collection->Add( certificate5 );
//Add certificates to the store.
store->Add( certificate1 );
store->AddRange( collection );
X509Certificate2Collection ^ storecollection = dynamic_cast<X509Certificate2Collection^>(store->Certificates);
Console::WriteLine( "Store name: {0}", store->Name );
Console::WriteLine( "Store location: {0}", store->Location );
System::Collections::IEnumerator^ myEnum = storecollection->GetEnumerator();
while ( myEnum->MoveNext() )
{
X509Certificate2 ^ x509 = safe_cast<X509Certificate2 ^>(myEnum->Current);
Console::WriteLine( "certificate name: {0}", x509->Subject );
}
//Remove a certificate.
store->Remove( certificate1 );
X509Certificate2Collection ^ storecollection2 = dynamic_cast<X509Certificate2Collection^>(store->Certificates);
Console::WriteLine( "{1}Store name: {0}", store->Name, Environment::NewLine );
System::Collections::IEnumerator^ myEnum1 = storecollection2->GetEnumerator();
while ( myEnum1->MoveNext() )
{
X509Certificate2 ^ x509 = safe_cast<X509Certificate2 ^>(myEnum1->Current);
Console::WriteLine( "certificate name: {0}", x509->Subject );
}
//Remove a range of certificates.
store->RemoveRange( collection );
X509Certificate2Collection ^ storecollection3 = dynamic_cast<X509Certificate2Collection^>(store->Certificates);
Console::WriteLine( "{1}Store name: {0}", store->Name, Environment::NewLine );
if ( storecollection3->Count == 0 )
{
Console::WriteLine( "Store contains no certificates." );
}
else
{
System::Collections::IEnumerator^ myEnum2 = storecollection3->GetEnumerator();
while ( myEnum2->MoveNext() )
{
X509Certificate2 ^ x509 = safe_cast<X509Certificate2 ^>(myEnum2->Current);
Console::WriteLine( "certificate name: {0}", x509->Subject );
}
}
//Close the store.
store->Close();
}
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 ();
}
}
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
Imports System.IO
Class X509store2
Shared Sub Main(ByVal args() As String)
'Create new X509 store called teststore from the local certificate store.
Dim store As New X509Store("teststore", StoreLocation.CurrentUser)
store.Open(OpenFlags.ReadWrite)
Dim certificate As New X509Certificate2()
'Create certificates from certificate files.
'You must put in a valid path to three certificates in the following constructors.
Dim certificate1 As New X509Certificate2("c:\mycerts\*****.cer")
Dim certificate2 As New X509Certificate2("c:\mycerts\*****.cer")
Dim certificate5 As New X509Certificate2("c:\mycerts\*****.cer")
'Create a collection and add two of the certificates.
Dim collection As New X509Certificate2Collection()
collection.Add(certificate2)
collection.Add(certificate5)
'Add certificates to the store.
store.Add(certificate1)
store.AddRange(collection)
Dim storecollection As X509Certificate2Collection = CType(store.Certificates, X509Certificate2Collection)
Console.WriteLine("Store name: {0}", store.Name)
Console.WriteLine("Store location: {0}", store.Location)
Dim x509 As X509Certificate2
For Each x509 In storecollection
Console.WriteLine("certificate name: {0}", x509.Subject)
Next x509
'Remove a certificate.
store.Remove(certificate1)
Dim storecollection2 As X509Certificate2Collection = CType(store.Certificates, X509Certificate2Collection)
Console.WriteLine("{1}Store name: {0}", store.Name, Environment.NewLine)
Dim x509a As X509Certificate2
For Each x509a In storecollection2
Console.WriteLine("certificate name: {0}", x509a.Subject)
Next x509a
'Remove a range of certificates.
store.RemoveRange(collection)
Dim storecollection3 As X509Certificate2Collection = CType(store.Certificates, X509Certificate2Collection)
Console.WriteLine("{1}Store name: {0}", store.Name, Environment.NewLine)
If storecollection3.Count = 0 Then
Console.WriteLine("Store contains no certificates.")
Else
Dim x509b As X509Certificate2
For Each x509b In storecollection3
Console.WriteLine("certificate name: {0}", x509b.Subject)
Next x509b
End If
'Close the store.
store.Close()
End Sub
End Class
Poznámky
Tuto třídu použijte k práci s úložištěm X.509.
Důležité
Počínaje rozhraním .NET Framework 4.6 tento typ implementuje IDisposable rozhraní. Po dokončení používání tohoto typu byste ho měli přímo nebo nepřímo odstranit. Pokud chcete odstranit typ přímo, zavolejte jeho Dispose metodu try
/catch
v bloku. Pokud ho chcete odstranit nepřímo, použijte konstruktor jazyka, například using
(v jazyce C#) nebo Using
(v jazyce Visual Basic). Další informace najdete v části "Použití objektu, který implementuje IDisposable" v IDisposable tématu rozhraní.
U aplikací, které cílí na rozhraní .NET Framework 4.5.2 a starší verze, X509Store třída neimplementuje IDisposable rozhraní, a proto nemá metodu Dispose
.
Konstruktory
X509Store() |
Inicializuje novou instanci X509Store třídy pomocí úložiště osobních certifikátů aktuálního uživatele. |
X509Store(IntPtr) |
Inicializuje novou instanci X509Store třídy pomocí obslužného rutiny Intptr do |
X509Store(StoreLocation) |
Inicializuje novou instanci X509Store třídy pomocí osobního úložiště certifikátů z zadaného umístění úložiště. |
X509Store(StoreName) |
Inicializuje novou instanci X509Store třídy pomocí zadaného názvu úložiště z úložiště certifikátů aktuálního uživatele. |
X509Store(StoreName, StoreLocation) |
Inicializuje novou instanci X509Store třídy pomocí zadaných StoreName hodnot a StoreLocation . |
X509Store(StoreName, StoreLocation, OpenFlags) |
Inicializuje novou instanci třídy pomocí zadaného X509Store názvu úložiště a hodnoty umístění úložiště a pak ji otevře pomocí zadaných příznaků. |
X509Store(String) |
Inicializuje novou instanci X509Store třídy pomocí zadaného názvu úložiště. |
X509Store(String, StoreLocation) |
Inicializuje novou instanci třídy pomocí zadaného X509Store názvu úložiště a umístění úložiště. |
X509Store(String, StoreLocation, OpenFlags) |
Inicializuje novou instanci třídy pomocí zadaného X509Store názvu úložiště a hodnoty umístění úložiště a pak ji otevře pomocí zadaných příznaků. |
Vlastnosti
Certificates |
Vrátí kolekci certifikátů umístěnou v úložišti certifikátů X.509. |
IsOpen |
Získá hodnotu, která označuje, zda je instance připojena k otevřenému úložišti certifikátů. |
Location |
Získá umístění úložiště certifikátů X.509. |
Name |
Získá název úložiště certifikátů X.509. |
StoreHandle |
IntPtr Získá popisovač do |
Metody
Add(X509Certificate2) |
Přidá certifikát do úložiště certifikátů X.509. |
AddRange(X509Certificate2Collection) |
Přidá kolekci certifikátů do úložiště certifikátů X.509. |
Close() |
Zavře úložiště certifikátů X.509. |
Dispose() |
Uvolní prostředky používané tímto X509Storenástrojem . |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
Open(OpenFlags) |
Otevře úložiště certifikátů X.509 nebo vytvoří nové úložiště v závislosti na OpenFlags nastavení příznaku. |
Remove(X509Certificate2) |
Odebere certifikát z úložiště certifikátů X.509. |
RemoveRange(X509Certificate2Collection) |
Odebere rozsah certifikátů z úložiště certifikátů X.509. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |