2
我有一个文件(.p12),其中包含3个证书(链接在一起)受密码保护,我已在我的商店中安装。 我试图将它们加载到我的代码中。 我从文件加载它们的方法是这样的:从商店加载X509证书2证书链
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>().ToList();
var certFromStore = certificates.Single(c => c.Thumbprint == thumbprintMerchant);
var newCert = new X509Certificate2(certFromStore.RawData, "mypassword");
如果第一行代表您的代码,那么'clientCert'不是3个证书链,而只是具有私钥的证书。第二行不能产生你显示的错误,所以显然有更多的上下文。比如,你是如何获得'certFromStore'的。 – bartonjs
当我在商店中导入同一个文件时,我得到3个证书,但是从代码加载它时,它是带有私钥的证书。那么我怎么能从商店里得到同样的结果呢? 这是我如何从商店加载它们: 'var computerCaStore = new X509Store(StoreName.Root,StoreLocation.LocalMachine); computerCaStore.Open(OpenFlags.ReadOnly); \t \t \t \t var certificates = computerCaStore.Certificates.OfType()。ToList(); \t \t \t \t变种clientCertificat1 = certificates.Single(C => c.Thumbprint == thumbprintMerchant);' 我使用的指纹 –
请编辑上下文的问题。评论中的示例代码与该问题不匹配,因此很难推理任何事情。 – bartonjs