0
我需要在.crl擴展名中轉換一堆證書吊銷列表,它們是DER格式(二進制),我需要將它們轉換爲PEM格式(Base64字符串表示形式每個.crl文件的二進制內容)。在.net中轉換不同的證書吊銷列表格式
按照指示在Convert .der to .pem using OpenSSL-Net,我創建了下面的代碼試圖單一的.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說「無法找到請求的對象」。我想知道是否有另一種方法可以進行此轉換,也許X509Certificate2構造函數不喜歡crl文件?
這會給每一個字符換一行。跳過'使用(StreamWriter outputFile ....'並且使用'File.WriteAllText(@「D:\ certsunzip \ test.crl」,pem);' – pepo
另外'Base64FormattingOptions.InsertLineBreaks'將在每76個字符之後添加換行符。打電話給我老學校,但我習慣在PEM編碼的文件中每行看到64個字符,但是我用openssl.exe檢查了輸出,並且它正確地解析了它,所以我想它很好。 – pepo
換行符真的不相關。即使把每個字符放在自己的行上,正確的解析器也必須正確處理這個 – Crypt32