2012-01-14 3 views
5

previous question까지 따라 가면 개인 키가있는 X509 인증서를 받아야하는 코드가 있습니다. 답안에서 언급했듯이 프로덕션 환경에서는 X509Store를 사용하여 이러한 문제가 발생합니다.개인 키가있는 인증서의 기본 64 인코딩 된 값을 얻는 방법?

단위 테스트를위한 가장 좋은 방법은 무엇입니까? 프로덕션 환경에있는 것보다 다른 인증서를 사용하여 개발하고 테스트하기를 원하므로 다른 구현을 제공하기 위해 CertificateRepository 인터페이스를 만들 수 있습니다.

테스트의 경우/dev 구현의 경우 base64로 인코딩 된 인증서 문자열을 사용하고 더미 비밀번호와 전용 테스트/dev 인증서를 사용하여 인증서 인스턴스를 만드는 것이 좋습니다. 그러나 지금까지는 개인 키가있는 인증서를 base64 문자열로 인코딩하는 방법을 알아 내지 못했습니다. Base-64로 MMC에서 인증서를 내보낼 때마다 공개 키만 인코딩됩니다.

+0

인증서는 어떻게 만듭니 까? –

+0

makecert.exe와 함께 다음 스위치를 사용하여 만들었습니다. -r -pe – danludwig

답변

9

mmc를 사용하여이를 수행하는 방법을 알 수 없었습니다. 그러나 나는 코드에서 작업을 수행하는 방법을 알아낼 않았다

var store = new X509Store(StoreName.My, StoreLocation.LocalMachine); 
store.Open(OpenFlags.ReadOnly); 
var certificate = store.Certificates.Find(X509FindType.FindByThumbprint, 
    "BLABLABLA", false)[0]; // doesn't matter how you get the cert 
var exported = certificate.Export(X509ContentType.Pfx, "the password"); 
var base64 = Convert.ToBase64String(exported); 
store.Close(); 

만큼 당신이 X 509 상점에서 받고있는 인증서 개인 키를 가지고, 그것은 어떤 당신이 할 수있는, 내 보낸 바이트 arrray에 종료됩니다 다음 base64 문자열로 변환하십시오.

0

인증서를 저장소에 추가 할 때 개인 키를 내보낼 수 있도록 표시했는지 확인하십시오. 인증서를 만들 makecert를 사용하는 경우

, 개인 키를 내보낼 수 있도록 -pe 옵션을 추가 할 수 있습니다.

+0

그랬지만 pkcs12 (.pfx)를 제외한 다른 것으로 내보낼 수는 없었습니다. – danludwig