如何在C#中将X509Certificate2存储到数据库中

3
这是情景: 我有几个.pfx文件,需要将它们存储到MySQL数据库中。 我已经尝试过存储RawData,但当我尝试使用重构的证书签署xml时,会出现以下错误: "Signing key is not loaded." 好了,所以我尝试存储私钥,使用函数ToXmlString从私钥生成字符串,使用FromXmlString加载新字符串,但是我得到了以下错误: "Object contains only the public half of a key pair. A private key must also be provided." 问题是,如何正确地将证书及其键存储在数据库中,以便我可以重建它并用于数字签署文档呢? 更新: 已经尝试过此方法,但没有成功: Store an X509Certificate2 in DB
1个回答

4
证书只包括公钥,因此仅存储该公钥是不起作用的。
另一方面,cert.PrivateKey.ToXmlString(true) 应该可以工作。您确定已将其调用时的 includePrivateParameters 参数设置为 true,并且已将其导入为可导出吗?
X509Certificate2 cert = new X509Certificate2("key.pfx", "password", X509KeyStorageFlags.Exportable);
string xml = cert.PrivateKey.ToXmlString(true);

或者,您可以将整个pfx存储在数据库中。


尝试将私有参数设置为true时,它给了我一个错误。如何存储整个pfx?序列化它?它不会丢失密钥...属性等? - Alan Araya
@AlanAraya:我会只存储pfx文件的原始内容。或者,检查导入pfx文件的方式(请参见编辑后的答案)。 - Rasmus Faber
是的,谢谢Faber.....缺少了X509KeyStorageFlags.Exportable参数.....不知道为什么,但没有它就不能工作... - Alan Araya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接