X509Certificate2.Export Method

Exports the certificate and its private key (if present) to a byte array.

Syntax

public byte[] Export(
    X509ContentType contentType,
    string password
)

Parameters

Name Description Type
contentType One of the X509ContentType enumeration values that specifies the format of the exported certificate. X509ContentType
password The password used to protect the private key when contentType is Pkcs12. If the certificate does not contain a private key, or if contentType is not Pkcs12, this parameter is ignored. The password must be at least 4 characters long. string

Return Value

Description Type
A byte array containing the exported certificate and private key. byte[]

Exceptions

Type Condition
ArgumentException The contentType parameter is not a valid X509ContentType value.
CryptographicException The private key cannot be exported. This can happen if the certificate does not have a private key or if the password is incorrect.
ArgumentNullException The contentType parameter is null.

Remarks

The Export method allows you to serialize an X509Certificate2 object into a byte array for storage, transmission, or use by other applications. The format of the exported data is determined by the contentType parameter.

When exporting a certificate that includes a private key using X509ContentType.Pkcs12, you must provide a password to protect the private key. This password will be required when importing the certificate later.

Examples

Exporting a certificate with a private key to PFX format.

using System;
using System.Security.Cryptography.X509Certificates;

public class CertificateExportExample
{
    public static void Main(string[] args)
    {
        try
        {
            // Load a certificate with a private key
            X509Certificate2 certificate = new X509Certificate2("mycert.pfx", "mysecretpassword");

            // Export the certificate and private key to PFX format
            byte[] pfxData = certificate.Export(X509ContentType.Pkcs12, "newSecurePassword");

            // Save the PFX data to a file
            System.IO.File.WriteAllBytes("exported_cert.pfx", pfxData);

            Console.WriteLine("Certificate exported successfully to exported_cert.pfx");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}

Exporting a certificate without a private key.

using System;
using System.Security.Cryptography.X509Certificates;

public class CertificateExportExample
{
    public static void Main(string[] args)
    {
        try
        {
            // Load a certificate (assuming it might not have a private key or you don't need it)
            X509Certificate2 certificate = new X509Certificate2("mycert.cer");

            // Export the certificate in CER format (no private key)
            byte[] cerData = certificate.Export(X509ContentType.Cert);

            // Save the CER data to a file
            System.IO.File.WriteAllBytes("exported_cert.cer", cerData);

            Console.WriteLine("Certificate exported successfully to exported_cert.cer");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}

Note

Ensure that you handle passwords securely. Avoid hardcoding sensitive information directly in your code in production environments. Consider using secure storage mechanisms for passwords.