2011-04-18 5 views
1

PFX 자체 서명 인증서에서 cryptoAPI을 사용하여 영구 키 컨테이너를 만드는 방법은 무엇입니까?CryptAcquireCertificatePrivateKey - 인증서에 액세스하는 영구 키 컨테이너 만들기

CryptAcquireCertificatePrivateKey 호출을 통해 PFX의 개인 키에 액세스 할 수 있지만 개인 컨테이너와 공용 키 쌍을 키 컨테이너로 가져 오는 방법은 무엇입니까? 이 키 컨테이너는 가져 오기 프로세스를 완료 한 후 USER 키 저장소에 영구적으로 존재해야합니다.

앞으로 제안.

감사

답변

2

한 가지 방법은 인증서 및 PFXImportCertStore의 대한 키 쌍을 가져 오는 것입니다.

다른 방법으로는 이해할 수 있습니다. 새 키 컨테이너에 CryptAcquireCertificatePrivateKey과 관련하여 얻은 키 쌍을 저장할 수 있습니다. 그런 다음 인증서 (개인 키없이) 만 가져올 수 있으며 마지막에는 인증서의 속성으로 개인 키를 사용하여 컨테이너를 설정해야합니다 (CertSetCertificateContextProperty : CERT_KEY_PROV_INFO_PROP_ID). 연습 한 사용에서

항상 PFXImportCertStore 기능,하지만 난 당신이 테스트 프로그램 당신 CertEnumCertificateContextProperties을 작성하고 인증서 저장소에 인증서와 함께 저장되는 특성을보고하는 것이 좋습니다,하지만을 가되지 않는 인증서의 일부.

+0

@ Oleg- Thanks. CRYPT_KEY_PROV_INFO를 설정 한 후 PFX를 성공적으로 내보낼 수있었습니다. 그러나 마법사를 사용하여 동일한 PFX를 가져 오면 이전에 내보낼 때 설정했던 자체가 아니라 자체 컨테이너의 키 컨테이너 이름이 만들어집니다. 왜 이런 일이 일어나는 지 알기나 해. – Raj

+1

@Raj : PFX를 가져 오면 새 컨테이너가 만들어지고 (일반적으로 새 GUID가 사용됨) 인증서 속성이 새 컨테이너를 가리 키도록 설정됩니다. 컨테이너의 이름은 중요하지 않습니다. 이것은 인증서 또는 개인 키의 일부가 아닙니다. 따라서 키 컨테이너의 이름은 PFX로 내보내지지 않습니다. – Oleg

+0

@Oleg, 가져 오기 전에 원래 키 컨테이너 이름을 유지하려면 progrmatically (내 경우에는 키 컨테이너 이름이 cert 주체 이름 임), 가져 오기 전에 CRYPT_KEY_PROV_INFO 구조를 설정하면 원본이 유지됩니다 키 컨테이너 이름? 감사합니다 – Raj