2016-08-02 81 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