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

그의 의견은 그 대답을 편집하기 전이었습니다. BTW는 다른 문맥에 따라 다르게 읽었을 것입니다. 그래, 상점에서 항상 똑같은 인증서를 찾고 있다면 좋은 방법입니다. . – 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

이 방법을 사용하여 지금 cert를 검색하고 작동하지만 일반 사용자가 쉽게 볼 수 있습니다. 그래서 나는 로컬 컴퓨터 가게에 넣고 거기에서 그것을 읽고 싶다. – JohnM

관련 문제