Convert .der to .pem using OpenSSL-Net

3.8k views Asked by At

I have a .der certificate that is binary encoded which needs to be converted to a .pem file programatically in .net

This line gives the correct output using OpenSSL on OSX:

openssl x509 -inform der -in cert.crt -out cert.pem

But we need to do the same in .net

We have tried many solutions but are completely stuck.

Would something like this work:

var oc = OpenSSL.X509.X509Certificate.FromDER(bio); 

Any advice very welcome :)

2

There are 2 answers

3
Marcus On BEST ANSWER

In the end we were able to use this to import the DER into a string which we could then export to a PEM:

var oc = OpenSSL.X509.X509Certificate.FromDER(bio);

These pages were useful:

https://github.com/openssl-net/openssl-net/blob/master/ManagedOpenSsl/X509/X509Certificate.cs

https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2.rawdata

Thanks all for your help :)

2
Crypt32 On

Still use OpenSSL? We are coming to you!

No, seriously, it is done in just 1 line:

String pem = "-----BEGIN CERTIFICATE-----\r\n" + Convert.ToBase64String(cert.RawData, InsertLineBreaks) + "-----END CERTIFICATE-----";

where cert is an X509Certificate2object.