繁体   English   中英

从商店加载X509Certificate2证书链

[英]Loading X509Certificate2 certificate chain from store

我有一个文件(.p12)包含3个证书(链接在一起)密码保护,我已经安装在我的商店。 我正在尝试将它们加载到我的代码中。 我从文件加载它们的方式是这样的:

 var clientCert = new X509Certificate2(@"myfile.p12", "mypassword");

如何在从商店加载它们时获得相同的结果?

我试过了:

var computerCaStore = new X509Store(StoreName.Root, StoreLocation.LocalMachine); 
computerCaStore.Open(OpenFlags.ReadOnly); 
var certificates = computerCaStore.Certificates.OfType<X509Certificate2>().ToLi‌​st(); 
var certFromStore = certificates.Single(c => c.Thumbprint == thumbprintMerchant);
var newCert = new X509Certificate2(certFromStore.RawData, "mypassword");

certFromStore应该等同于clientCert ,最后一行是打破你的。

X509Certificate2上的RawData属性返回证书的DER编码值,而不是原始文件字节。 证书没有私钥,因此最后一行将其剥离。 您之前提到的问题是TLS例外,这是因为您的证书不再具有私钥。

如果certFromStore.HasPrivateKey为false,那么您将证书放入商店所做的任何操作都不会像您认为的那样工作。 具有私钥的证书位于Root存储中非常罕见。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM