【问题标题】:Convert .der to .pem using OpenSSL-Net使用 OpenSSL-Net 将 .der 转换为 .pem
【发布时间】:2023-03-04 17:05:01
【问题描述】:

我有一个二进制编码的 .der 证书,需要在 .net 中以编程方式将其转换为 .pem 文件

这一行在 OSX 上使用 OpenSSL 给出了正确的输出:

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

但是我们需要在 .net 中做同样的事情

我们尝试了很多解决方案,但完全卡住了。

这样的工作是否可行:

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

非常欢迎任何建议:)

【问题讨论】:

标签: c# security openssl ssl-certificate openssl-net


【解决方案1】:

最后,我们能够使用它来将 DER 导入到一个字符串中,然后我们可以将其导出到 PEM:

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

这些页面很有用:

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

感谢大家的帮助:)

【讨论】:

  • 什么是“bio”参数?我的文件夹中有一个 DER 格式的 .crl 文件列表,我需要将其转换为 PEM 格式。如何加载所有 .crl 文件作为 bio 参数?
  • 您能否提供更详细的操作步骤?我对如何做到这一点感到困惑,谢谢。
  • var bio = new OpenSSL.Core.BIO(privateKeyBytes); 对字符串也有重载。或直接来自文件:var bio = OpenSSL.Core.BIO.File(filePath);
【解决方案2】:

仍在使用 OpenSSL?我们来找你了!

不,说真的,它只用 1 行就完成了:

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

其中certX509Certificate2对象。

【讨论】:

  • X509Certificate2 对象是否包含以 DER 格式编码的任何内容?我正在尝试将 DER 格式的 .crl 扩展名中的一堆证书吊销列表文件转换为 PEM 格式,但是当我编写代码以将这些 CRL 文件作为 X509Certificate2 对象时,它似乎在 Visual Studio 中给我一个错误X509Certificate2 不喜欢我的 .crl 文件,即使它们是 DER 格式。
  • 我想你的意思是:var pem = "-----BEGIN CERTIFICATE-----\n" + Convert.ToBase64String(File.ReadAllBytes("certificate.der"), Base64FormattingOptions。 InsertLineBreaks) + "\n-----END CERTIFICATE-----";
猜你喜欢
  • 1970-01-01
  • 2018-07-30
  • 2013-06-02
  • 2023-03-20
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 2011-07-22
相关资源
最近更新 更多