Powershell: Export/Convert a X509 Certificate to pem format

Hi,

powershell respectively the .NET framework does not offer a method to export a X509 certificate in PEM format. The pem format is a Base64 encoded view from the raw data with a header and a footer.

An example to export the machine certificate (with Thumbprint: 1C0381278083E3CB026E46A7FF09FC4B79543D) of an computer

$InsertLineBreaks=1
$oMachineCert=get-item Cert:\LocalMachine\My\1C0381278083E3CB026E46A7FF09FC4B79543D
$oPem=new-object System.Text.StringBuilder
$oPem.AppendLine("-----BEGIN CERTIFICATE-----")
$oPem.AppendLine([System.Convert]::ToBase64String($oMachineCert.RawData,$InsertLineBreaks))
$oPem.AppendLine("-----END CERTIFICATE-----")
$oPem.ToString() | out-file D:\Temp\my.pem

Or load a certificate from a file and convert it to pem format

$InsertLineBreaks=1
$sMyCert="D:\temp\myCert.der"
$oMyCert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($sMyCert)
$oPem=new-object System.Text.StringBuilder
$oPem.AppendLine("-----BEGIN CERTIFICATE-----")
$oPem.AppendLine([System.Convert]::ToBase64String($oMyCert.RawData,$InsertLineBreaks))
$oPem.AppendLine("-----END CERTIFICATE-----")
$oPem.ToString() | out-file D:\Temp\my.pem

Michael

4 thoughts on “Powershell: Export/Convert a X509 Certificate to pem format”

  1. Amigo… tarde horas y horas buscando en muchos foros, páginas y tu respuesta fue la correcta.

    Complemento tu publicación para más colegas.. soy de méxico y necesitaba convertir un archivo .cer a .pem.. para la factura electrónica.

    El archivo .cer ya lo tenia en byte[]

    var certificate = new X509Certificate2(pCertificado);
    var oCert = certificate.Export(X509ContentType.Cert);
    certificate = new X509Certificate2(oCert);

    var oPem = new StringBuilder();
    oPem.AppendLine(“—–BEGIN CERTIFICATE—–“);
    oPem.AppendLine(Convert.ToBase64String(certificate.RawData, Base64FormattingOptions.InsertLineBreaks));
    oPem.AppendLine(“—–END CERTIFICATE—–“);

Leave a Reply