2009-03-18 4 views
8

Microsoft의 TS 게이트웨이를 사용하여 새로운 원격 액세스 솔루션을 설정했습니다.이 게이트웨이는 최종 사용자 대신 몇 가지 간단한 단계를 거쳐야 작동합니다 (루트 설치 CA 인증서, RDP 6.1 클라이언트 요구 사항 등).Win32의 코드를 통해 루트 CA 인증서 설치

이 설치 프로세스를 최대한 쉽게하기 위해 (많은 사용자가 기술적 인 마음을 갖지 않습니다.) 이러한 모든 작업을 자동으로 수행하는 프로그램을 만들려고합니다. 나는 그 중 대부분이 작동하지만, 루트 CA 인증서를 Windows 인증서 저장소로 가져 오는 방법에 대해서는 확실하지 않습니다.

다양한 패치 및 업데이트 수준의 다양한 컴퓨터에서 실행될 수 있으므로 .NET과 네이티브 이외의 모든 것을 명확하게 처리하고 있습니다. 도구는 여분의 것을 설치해야하는 사용자 (음, Windows XP, 서비스 팩 없음, Windows의 최소 요구 버전). 말하자면, 도구가 번들로 제공 될 수 있다면 제 3자를 사용하는 것은 괜찮습니다. 대용량이 아닌 한 대화식 단계를 도입하지 않아도됩니다. 이상적으로 Windows API의 어떤 것이 가장 좋겠지 만 관련성이있는 항목은 추적 할 수 없습니다.

현재이 도구는 C++ 응용 프로그램이므로 매우 낮은 수준의 항목이라면 괜찮습니다.

답변

7

먼저 당신이

HCERTSTORE hRootCertStore = CertOpenSystemStore(NULL,"ROOT"); 

는 다음과 같은 CertAddEncodedCertificateToStore로 CertAdd 기능 중 하나를 사용하여 인증서를 추가 ... 루트 인증서 저장소를 열어야합니다.

CertAddEncodedCertificateToStore(hRootCertStore,X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,pCertData,cbCertData,CERT_STORE_ADD_USE_EXISTING,NULL); 

이 pCertData 및 cbCertData 가능성이 당신이 파일에서 읽어 인증서 데이터를 나타낼 것이다 (인증서 파일에있을 것입니다, 또는 당신이 당신의 응용 프로그램에 포함하는 방법 있는지 확실하지 않습니다).

은 다음과 ...

CertCloseStore(hRootCertStore,0); 

참고 가게를 닫습니다 사용자로 실행하면이 코드는 사용자의 루트 저장소가 아닌 컴퓨터에 인증서를 설치합니다. 또한 가져 오기를 승인하려면 사용자가 이해하고 "예"를 선택해야한다는 경고 대화 상자가 나타납니다. 설치 프로그램이이 코드를 시스템 계정에서 실행할 수 있으면 가져 오기가 컴퓨터의 루트 저장소에 영향을 미치며 경고 대화 상자가 표시되지 않습니다.

0

MSDN의 Windows SDK에있는 몇 가지 C++ 샘플

그냥 복사하십시오.

2

CertAddEncodedCertificateToSystemStore를 확인할 수도 있습니다.

관련 문제