3

这是场景:

我有几个.pfx文件,我需要将它们存储在 MySQL DB 中。

我已经尝试存储 RawData 的东西,但是当我尝试使用重建的证书签署 xml 时,我得到:

未加载签名密钥。

好吧,所以我尝试存储私钥,使用该函数ToXmlString从私钥生成字符串并FromXmlString加载新字符串,但后来我得到:

对象仅包含密钥对的公共部分。还必须提供私钥。

关键是,如何正确地将证书及其密钥存储在数据库中,以便我可以重建它并将其用于数字签名文档?

更新:

已经尝试过但没有用: Store an X509Certificate2 in DB

4

1 回答 1

4

该证书仅包含公钥,因此仅存储该公钥是行不通的。

另一方面,cert.PrivateKey.ToXmlString(true)应该工作。您确定您记得使用includePrivateParameters设置为 true 的参数调用它并且您将其导入为可导出的吗?

X509Certificate2 cert = new X509Certificate2("key.pfx", "password", X509KeyStorageFlags.Exportable);
string xml = cert.PrivateKey.ToXmlString(true);

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

于 2012-07-04T21:20:35.173 回答