我基本上需要将.pfx证书导出为a Base64string,将其存储在数据库中并在以后恢复,从中转换Base64string.我目前使用的是X509Certificate2类如下:
要转换它并在DB中存储cert64字符串:
X509Certificate2 pfx = new X509Certificate2(@"C:\originalcert.pfx", "password", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.UserKeySet);
string cert64 = Convert.ToBase64String(pfx.RawData);
Run Code Online (Sandbox Code Playgroud)
稍后从DB获取它(我需要将其存储为Base64string):
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"));
Run Code Online (Sandbox Code Playgroud)
当我比较C:\originalcert.pfx和C:\copycert.pfx使用时,它返回true :
X509Certificate2.Equals
Run Code Online (Sandbox Code Playgroud)
对于我正在运行的应用程序需要证书才能正常工作,我有时会收到一些错误,.pfx提供给我的一些不同的证书,我用来解决导入/安装到机器并通过Web浏览器导出它,创建一个新.pfx文件瞧.
使用该copycert.pfx文件给出了同样的错误但是当我尝试copycert.pfx通过该文件安装或使用Web浏览器导入它时,我得到:"导入成功"消息,但无法在"个人"选项卡下找到已安装的证书如果我安装了原件,我会的originalcert.pfx.
此外,重要的是我从.pfx文件导出并稍后将其导入.pfx文件.
我在做错了什么/在代码导出/导入中丢失了什么?