You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何通过代码实现.crt文件转换为.pem文件

C# 实现DER编码.crt证书转PEM格式方案

你给出的OpenSSL转换命令openssl x509 -inform der -in file.crt -out file.pem,核心是将二进制DER编码的X.509证书转换为带固定头尾标记的Base64编码PEM格式,用C#内置类库即可实现,无需依赖外部OpenSSL环境。

前置校验:部分.crt文件本身就是PEM编码格式,只是后缀名命名为.crt,这类文件无需转换,直接修改后缀为.pem即可正常使用。


方法1:适用于.NET 5+、.NET Core 3.0+ 版本

新版.NET的加密类库内置了PEM格式导出API,代码最简:

using System.Security.Cryptography.X509Certificates;

// 替换为实际文件路径
string inputCrtPath = @"C:\your\path\file.crt";
string outputPemPath = @"C:\your\path\file.pem";

// 加载DER格式证书
using X509Certificate2 cert = new X509Certificate2(inputCrtPath);
// 直接导出标准PEM格式内容
string pemContent = cert.ExportCertificatePem();
// 写入目标文件
File.WriteAllText(outputPemPath, pemContent);

方法2:兼容.NET Framework、.NET Core 2.x及更早版本

旧版本没有内置PEM导出API,按照PEM格式规范手动拼接即可,输出结果和OpenSSL命令完全一致:

using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using System.Text;

// 替换为实际文件路径
string inputCrtPath = @"C:\your\path\file.crt";
string outputPemPath = @"C:\your\path\file.pem";

// 读取DER格式证书二进制内容
byte[] crtBytes = File.ReadAllBytes(inputCrtPath);
using X509Certificate2 cert = new X509Certificate2(crtBytes);
byte[] certRawData = cert.RawData;

// 对二进制内容做Base64编码
string base64Content = Convert.ToBase64String(certRawData);

// 按PEM规范拼接内容,每64个字符插入换行
StringBuilder pemBuilder = new StringBuilder();
pemBuilder.AppendLine("-----BEGIN CERTIFICATE-----");
for (int i = 0; i < base64Content.Length; i += 64)
{
    int lineLen = Math.Min(64, base64Content.Length - i);
    pemBuilder.AppendLine(base64Content.Substring(i, lineLen));
}
pemBuilder.AppendLine("-----END CERTIFICATE-----");

// 写入文件,PEM使用ASCII编码即可
File.WriteAllText(outputPemPath, pemBuilder.ToString(), Encoding.ASCII);

注意事项

  • 如果加载证书时抛出异常,先排查源.crt文件是否损坏、是否为DER编码的X.509证书,PFX/P12等带私钥的证书容器格式不适用该转换逻辑。
  • 以上两种方法导出的PEM文件,和OpenSSL对应命令的输出格式、内容完全一致,可直接用于所有支持PEM证书的场景。

内容的提问来源于stack exchange,提问作者Gregori Schuster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 20:48:15