Import certificate, private or public keys (PEM, CER, PFX)
Tuesday, November 22nd, 2011Encrypted private key, RSA private key in PEM file
PEM stands for Privacy Enhanced Mail format.
PemReader pem = new PemReader(); RSACryptoServiceProvider rsa = pem.ReadEncryptedPrivateKeyFromFile( "EncryptedPrivateKey.pem", // "EncryptedRSAPrivateKey.pem" "cypher");
This code handles following formats:
PKCS #8 EncryptedPrivateKeyInfo Encrypted Format:
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIICojAcBgoqhkiG9w0BD .....
Private Key (Traditional SSLeay RSAPrivateKey format) Encrypted:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,24A667C253F8A1B9
mKz .....
You can remove the passphrase from the private key:
openssl rsa -in EncryptedPrivateKey.pem -out PrivateKey.pem
Unencrypted private key in PEM file
PemReader pem = new PemReader(); RSACryptoServiceProvider rsa = pem.ReadPrivateKeyFromFile( "PrivateKey.pem");
This code handles following formats:
PKCS #8 PrivateKeyInfo Unencrypted:
-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0B ......
Private Key (Traditional SSLeay RSAPrivateKey format) Unencrypted:
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCcHVm .....
Public key in PEM file
PemReader pem = new PemReader(); RSACryptoServiceProvider rsa = pem.ReadPublicKeyFromFile( "PublicKey.pem")
This code handles following formats:
Public Key (SubjecPublicKeyInfo):
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEB .....
Certificate/private key in PFX file
X509Certificate2 certificate = new X509Certificate2(
"certificate.pfx",
"",
X509KeyStorageFlags.PersistKeySet)
if (certificate.HasPrivateKey)
{
using (RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)certificate.PrivateKey)
{
}
}
Certificate in PEM/CER file
Note: The private key is never stored in a .pem/.cer file.
X509Certificate2 certificate = new X509Certificate2( "certificate.cer");
-or-
PemReader pem = new PemReader(); X509Certificate2 certificate = pem.ReadCertificateFromFile( "certificate.cer");
This code handles following formats:
-----BEGIN CERTIFICATE-----
MIIFsTCCA5mgAwIBAgIKYQ .....