X509Certificate2.PrivateKey Proprietà

Definizione

Attenzione

X509Certificate2.PrivateKey is obsolete. Use the appropriate method to get the private key, such as GetRSAPrivateKey, or use the CopyWithPrivateKey method to create a new instance with a private key.

Ottiene o imposta l'oggetto AsymmetricAlgorithm che rappresenta la chiave privata associata a un certificato.

C#
public System.Security.Cryptography.AsymmetricAlgorithm? PrivateKey { get; set; }
C#
[System.Obsolete("X509Certificate2.PrivateKey is obsolete. Use the appropriate method to get the private key, such as GetRSAPrivateKey, or use the CopyWithPrivateKey method to create a new instance with a private key.", DiagnosticId="SYSLIB0028", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public System.Security.Cryptography.AsymmetricAlgorithm? PrivateKey { get; set; }
C#
public System.Security.Cryptography.AsymmetricAlgorithm PrivateKey { get; set; }

Valore della proprietà

Oggetto AsymmetricAlgorithm, che può essere un provider del servizio di crittografia RSA o DSA.

Attributi

Eccezioni

Il valore della chiave non corrisponde a una chiave RSA o DSA oppure la chiave è illeggibile.

Il valore da impostare per questa proprietà è null.

L'algoritmo per questa chiave privata non è supportato.

Le chiavi X.509 non corrispondono.

La chiave del provider del servizio di crittografia è null.

Solo .NET Core e .NET 5+ : è stato effettuato un tentativo di impostare questa proprietà.

Esempio

L'esempio di codice seguente apre l'archivio certificati utente corrente, seleziona solo i certificati attivi, quindi consente all'utente di selezionare uno o più certificati. L'esempio scrive quindi le informazioni sul certificato nella console.

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

class CertSelect
{
    static void Main()
    {
        X509Store store = new X509Store("MY",StoreLocation.CurrentUser);
        store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

        X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
        X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid,DateTime.Now,false);
        X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Test Certificate Select","Select a certificate from the following list to get information on that certificate",X509SelectionFlag.MultiSelection);
        Console.WriteLine("Number of certificates: {0}{1}",scollection.Count,Environment.NewLine);

        foreach (X509Certificate2 x509 in scollection)
        {
            try
            {
                byte[] rawdata = x509.RawData;
                Console.WriteLine("Content Type: {0}{1}",X509Certificate2.GetCertContentType(rawdata),Environment.NewLine);
                Console.WriteLine("Friendly Name: {0}{1}",x509.FriendlyName,Environment.NewLine);
                Console.WriteLine("Certificate Verified?: {0}{1}",x509.Verify(),Environment.NewLine);
                Console.WriteLine("Simple Name: {0}{1}",x509.GetNameInfo(X509NameType.SimpleName,true),Environment.NewLine);
                Console.WriteLine("Signature Algorithm: {0}{1}",x509.SignatureAlgorithm.FriendlyName,Environment.NewLine);
                Console.WriteLine("Public Key: {0}{1}",x509.PublicKey.Key.ToXmlString(false),Environment.NewLine);
                Console.WriteLine("Certificate Archived?: {0}{1}",x509.Archived,Environment.NewLine);
                Console.WriteLine("Length of Raw Data: {0}{1}",x509.RawData.Length,Environment.NewLine);
                X509Certificate2UI.DisplayCertificate(x509);
                x509.Reset();
            }
            catch (CryptographicException)
            {
                Console.WriteLine("Information could not be written out for this certificate.");
            }
        }
        store.Close();
    }
}

Commenti

Attualmente questa proprietà supporta solo chiavi RSA o DSA, quindi restituisce un RSADSA oggetto in .NET Core o un RSACryptoServiceProviderDSACryptoServiceProvider oggetto in .NET Framework. Se non è associata alcuna chiave privata al certificato, restituisce null.

Avviso

Se si imposta questa proprietà su null o su un'altra chiave senza prima eliminarla, un file di chiave privata viene lasciato sul disco.

Per eliminare correttamente la chiave privata associata a questa proprietà, impostare PersistKeyInCsp su falsee quindi chiamare il Clear metodo .

Si applica a

Prodotto Versioni (obsoleto)
.NET 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 2.0, 2.1