C# 如何在db c中存储X509Certificate2#
以下是场景: 我有几个C# 如何在db c中存储X509Certificate2#,c#,xml,ado.net,cryptography,x509certificate,C#,Xml,Ado.net,Cryptography,X509certificate,以下是场景: 我有几个.pfx文件,需要将它们存储在MySQL数据库中 我已经尝试存储RawData,但是当我尝试使用重建的证书对xml进行签名时,我得到: 未加载签名密钥 因此,我尝试存储私钥,使用函数ToXmlString从私钥生成字符串,并使用FromXmlString加载新字符串,但随后我得到: 对象仅包含密钥对的公共部分。还必须提供私钥 关键是,如何正确地将证书及其密钥存储在数据库中,以便我可以重新构造它并将其用于数字签名文档 更新: 已尝试此操作,但无效: 证书仅包含公钥,因此仅存储
.pfx
文件,需要将它们存储在MySQL数据库中
我已经尝试存储RawData,但是当我尝试使用重建的证书对xml进行签名时,我得到:
未加载签名密钥
因此,我尝试存储私钥,使用函数ToXmlString
从私钥生成字符串,并使用FromXmlString
加载新字符串,但随后我得到:
对象仅包含密钥对的公共部分。还必须提供私钥
关键是,如何正确地将证书及其密钥存储在数据库中,以便我可以重新构造它并将其用于数字签名文档
更新:
已尝试此操作,但无效:
证书仅包含公钥,因此仅存储公钥不起作用 另一方面,
cert.PrivateKey.ToXmlString(true)
应该可以工作。您确定记得在includePrivateParameters
参数设置为true时调用它,并将其导入为可导出的吗
X509Certificate2 cert = new X509Certificate2("key.pfx", "password", X509KeyStorageFlags.Exportable);
string xml = cert.PrivateKey.ToXmlString(true);
或者,您可以将整个pfx存储在数据库中。尝试将私有参数设置为true时出错。如何存储整个pfx?序列化它?它不会松开钥匙。。。属性等?@AlanAraya:我只想存储pfx文件的原始内容。或者,检查导入pfx文件的方式(请参见编辑后的答案)。是的,谢谢Faber…..它缺少X509keystrageFlags.Exportable参数…..不知道,但它不起作用。。。