在 .net 中转换不同的证书吊销列表格式
Convert different certificate revocation list formats in .net
我需要转换一堆.crl扩展名的证书吊销列表,它们是DER格式(二进制),我需要将它们转换成PEM格式(每个.crl的二进制内容的Base64字符串表示文件)。
按照 中的说明,我创建了以下代码,试图将单个 .crl 文件从其 DER 格式转换为 PEM 格式:
private static void generateCrl()
{
byte [] certbyte = File.ReadAllBytes("D:\certsunzip\DODIDCA_44.crl");
Console.WriteLine("First byte: {0}", certbyte[0]);
X509Certificate2 cert = new X509Certificate2(certbyte);
string pem = "-----BEGIN X509 CRL-----\r\n" + Convert.ToBase64String(cert.RawData, Base64FormattingOptions.InsertLineBreaks) + "-----END X509 CRL-----";
using (StreamWriter outputFile = new StreamWriter(@"D:\certsunzip\test.crl"))
{
foreach (char chr in pem)
outputFile.WriteLine(chr);
}
}
但是,当我 运行 代码时,X509Certificate2 构造函数向我抛出一个 CryptographicException 说 "Cannot find the requested object"。我想知道是否有另一种方法可以进行此转换,也许 X509Certificate2 构造函数不喜欢 crl 文件?
删除第 3 行,因为它没有意义(因为 X509Certificate2 class 不支持 CRL)并在第 4 行使用 'certbyte' 变量:
private static void generateCrl()
{
byte [] certbyte = File.ReadAllBytes("D:\certsunzip\DODIDCA_44.crl");
Console.WriteLine("First byte: {0}", certbyte[0]);
string pem = "-----BEGIN X509 CRL-----\r\n" + Convert.ToBase64String(certbyte, Base64FormattingOptions.InsertLineBreaks) + "-----END X509 CRL-----";
using (StreamWriter outputFile = new StreamWriter(@"D:\certsunzip\test.crl"))
{
outputFile.Write(pem);
}
}
这会起作用。
我需要转换一堆.crl扩展名的证书吊销列表,它们是DER格式(二进制),我需要将它们转换成PEM格式(每个.crl的二进制内容的Base64字符串表示文件)。
按照
private static void generateCrl()
{
byte [] certbyte = File.ReadAllBytes("D:\certsunzip\DODIDCA_44.crl");
Console.WriteLine("First byte: {0}", certbyte[0]);
X509Certificate2 cert = new X509Certificate2(certbyte);
string pem = "-----BEGIN X509 CRL-----\r\n" + Convert.ToBase64String(cert.RawData, Base64FormattingOptions.InsertLineBreaks) + "-----END X509 CRL-----";
using (StreamWriter outputFile = new StreamWriter(@"D:\certsunzip\test.crl"))
{
foreach (char chr in pem)
outputFile.WriteLine(chr);
}
}
但是,当我 运行 代码时,X509Certificate2 构造函数向我抛出一个 CryptographicException 说 "Cannot find the requested object"。我想知道是否有另一种方法可以进行此转换,也许 X509Certificate2 构造函数不喜欢 crl 文件?
删除第 3 行,因为它没有意义(因为 X509Certificate2 class 不支持 CRL)并在第 4 行使用 'certbyte' 变量:
private static void generateCrl()
{
byte [] certbyte = File.ReadAllBytes("D:\certsunzip\DODIDCA_44.crl");
Console.WriteLine("First byte: {0}", certbyte[0]);
string pem = "-----BEGIN X509 CRL-----\r\n" + Convert.ToBase64String(certbyte, Base64FormattingOptions.InsertLineBreaks) + "-----END X509 CRL-----";
using (StreamWriter outputFile = new StreamWriter(@"D:\certsunzip\test.crl"))
{
outputFile.Write(pem);
}
}
这会起作用。