2016-08-02 85 views
2

我在本地計算機商店中安裝了x509。我如何閱讀C#? 我需要使用獲得的私鑰這樣如何從商店中讀取私鑰

RSACryptoServiceProvider rsa = (RSACryptoServiceProvider).cert.PrivateKey() 

回答

1

這將讓你從「我」(個人)庫中的證書。

var store = new X509Store(StoreName.My); 
store.Open(OpenFlags.ReadOnly); 
var certificate = store.Certificates.Single(c => c.Thumbprint == "Whatever-Your-Thumbprint-Is");  
store.Close(); 

此時您將擁有一個X509Certificate2,您可以從中訪問PrivateKey屬性。

+0

是的我只需要知道如何從本地商店檢索證書。目前我有C驅動器上的證書並從那裏讀取 – JohnM

+0

@JohnM您需要某種方法來識別您想要的證書。證書存儲區可以包含許多證書。通常使用指紋或X500 DN。拇指印是優選的,因爲它不太可能產生重複。此時,您可以在上面的示例中的'certificates'變量上使用'Find'來查找您的確切證書。 – vcsjones

+0

他的評論早於我對答案的編輯之前,順便說一句 - 可能對不同的上下文有不同的解讀。不過,如果您一直在尋找與商店完全相同的證書 - 拇指指紋。 – Yushatak

0
public void AddCertificate() 
    { 
     if (this.ClientCertificates == null) 
     { 
      this.ClientCertificates = new X509CertificateCollection(); 
     } 
     X509Certificate cert = new X509Certificate(path, pass, X509KeyStorageFlags.MachineKeySet); 
     this.ClientCertificates.Add(cert); 
    } 
+0

如果該功能的託管類是ClientCertificates,那麼該代碼將添加它,但我不認爲這就是他所要求的? – Yushatak

+0

@Yushatak也許我不明白這個問題... –

+0

這是我如何檢索證書現在和工作,但很容易被普通用戶看到。所以我想放在當地的電腦商店,並從那裏閱讀 – JohnM