【发布时间】:2017-06-03 06:08:59
【问题描述】:
我基本上需要将.pfx 证书导出为Base64string,将其存储在数据库中并稍后恢复,从Base64string 转换。
我目前使用的是X509Certificate2 类,如下所示:
转换它并将 cert64 字符串存储在数据库中:
X509Certificate2 pfx = new X509Certificate2(@"C:\originalcert.pfx", "password", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.UserKeySet);
string cert64 = Convert.ToBase64String(pfx.RawData);
稍后从 DB 中获取(我需要将其存储为 Base64 字符串):
X509Certificate2 cert = new X509Certificate2();
cert.Import(Convert.FromBase64String(string64cert), "password", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.UserKeySet);
File.WriteAllBytes(@"C:\copycert.pfx", cert.Export(X509ContentType.Pfx, "password"));
当我使用以下方法比较 C:\originalcert.pfx 和 C:\copycert.pfx 时,它返回 true:
X509Certificate2.Equals
对于我正在运行的需要证书才能正常工作的应用程序,我有时会收到一些错误,因为提供给我的一些不同的 .pfx 证书用于解决导入/安装到机器并通过 Web 导出它的问题浏览器,创建一个新的.pfx 文件,然后瞧。
使用copycert.pfx 文件给我同样的错误,但是当我尝试通过文件安装copycert.pfx 或使用网络浏览器导入它时,我得到:“导入成功”消息,但找不到在“个人”选项卡下安装证书,就像我安装原始 originalcert.pfx 一样。
另外,我从.pfx 文件导出并稍后将其导入.pfx 文件也很重要。
我做错了什么/在代码导出/导入中缺少什么?
【问题讨论】:
标签: c# certificate x509certificate2