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