【发布时间】:2011-06-11 23:36:24
【问题描述】:
我正在尝试将没有私钥的证书导出为 BASE-64 编码文件,与从 Windows 中导出它相同。从 Windows 导出时,我可以在记事本中打开 .cer 文件。
当我尝试以下操作并在记事本上打开时,我得到二进制数据...我认为它...不可读。
X509Certificate2 cert = new X509Certificate2("c:\\myCert.pfx", "test", X509KeyStorageFlags.Exportable);
File.WriteAllBytes("c:\\testcer.cer", cert.Export(X509ContentType.Cert));
我尝试删除“X509KeyStorageFlags.Exportable”,但这不起作用。我错过了什么吗?
编辑 - 我试过了
File.WriteAllText("c:\\testcer.cer",Convert.ToBase64String(cert.Export(X509ContentType.Cert)))
这似乎可行,但是,缺少“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”
【问题讨论】:
-
由于我必须使用过时的单声道框架,我求助于将 openssl 作为外部进程调用:
openssl pkcs12 -in importPath -nokeys -passin pass:- 这适用于 linux 和 windows openssl 二进制文件。
标签: c# .net base64 x509certificate x509certificate2