【发布时间】:2017-12-30 15:06:16
【问题描述】:
我在使用 FromXmlString 方法从 XML 加载 X509Certificate2 时遇到了困难。我得到的例外是m_safeCertContext is an invalid handle.
System.Security.Cryptography.CryptographicException occurred
HResult=-2146233296
Message=m_safeCertContext is an invalid handle.
Source=System
StackTrace:
at System.Security.Cryptography.X509Certificates.X509Certificate2.get_HasPrivateKey()
at System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey()
...
为了创建 XML,我正在加载 .pfx 文件并使用 ToXmlString;
var certificate = new X509Certificate2(
@"D:\public_privatekey.pfx",
(string)null,
X509KeyStorageFlags.Exportable
);
var exportedPrivate = certificate.PrivateKey.ToXmlString(true);
这会生成像这样开始的 XML...
<RSAKeyValue><Modulus>y0iuejYHYajI...
要重新创建证书,我正在使用...
var certificate = new X509Certificate2();
certificate.PrivateKey.FromXmlString(xml);
其中xml 是一个包含XML 内容的字符串。
在调用FromXmlString 时会引发异常。
我是使用证书的新手,但我最好的猜测是.pfx 包含公钥和私钥,可能还有一些其他重要数据,我需要所有这些才能获得有效的 X509 证书.
但是我无法直接在X509Certificate2 上找到ToXmlString 和FromXmlString。我该怎么做?感谢您的建议。
【问题讨论】:
-
在SQL中将整个.pfx文件作为二进制列会更容易。
-
“我在使用 FromXmlString 方法从 XML 加载 X509Certificate2 时遇到困难” 我不知道
X509Certificate2有FromXmlString方法,哪个版本的 .你在用网吗? -
certificate.PrivateKey在您实际加载证书之前不会存在。
标签: c# encryption cryptography x509certificate2