以下是该方案:
我有几个.pfx
个文件,我需要将它们存储在MySQL数据库中。
我已经尝试存储RawData的东西,但是当我尝试使用重建的证书签署xml时,我得到:
未加载签名密钥。
那么我尝试存储私钥,使用函数ToXmlString
从私钥生成一个字符串,FromXmlString
加载新字符串,但后来我得到了:
对象仅包含密钥对的公共一半。还必须提供私钥。
关键是,如何以一种我可以重建它并将其用于数字签名文档的方式将证书及其密钥正确存储在数据库中?
更新
已经尝试了这个并且没有用: Store an X509Certificate2 in DB
答案 0 :(得分:3)
证书仅包含 public 键,因此只存储该证书不起作用。
另一方面,cert.PrivateKey.ToXmlString(true)
应该有效。你确定你记得在includePrivateParameters
参数设置为true的情况下调用它并且你将它导出为可导出的吗?
X509Certificate2 cert = new X509Certificate2("key.pfx", "password", X509KeyStorageFlags.Exportable);
string xml = cert.PrivateKey.ToXmlString(true);
或者,您可以将整个pfx存储在数据库中。