2009-03-18 13 views
8

Właśnie skonfigurowaliśmy nowe rozwiązanie zdalnego dostępu, korzystając z bramy TS firmy Microsoft, która wymaga kilku drobiazgowych kroków w imieniu użytkowników końcowych, aby umożliwić jej działanie (instalowanie naszego katalogu głównego ca cert, wymaganie klienta RDP 6.1 itp.).Instalowanie certyfikatu głównego CA za pomocą kodu na Win32

Aby ten proces instalacji był tak łatwy, jak to tylko możliwe (wielu z tych użytkowników nie jest technicznie myślących), czekam na stworzenie programu, który wykona wszystkie te zadania automatycznie. Większość z nich działa, ale nie jestem do końca pewien, jak zaimportować certyfikat głównego urzędu certyfikacji do magazynu certyfikatów systemu Windows.

Ponieważ może to potencjalnie być uruchomione na wielu komputerach z różnymi poziomami poprawek i aktualizacji, nie mam do czynienia z .NET i czymś, co nie jest natywne - narzędzie powinno "po prostu działać" bez użytkownik musi zainstalować coś dodatkowego (cóż, powiem Windows XP, bez dodatków Service Pack, to minimalna wymagana wymagana wersja systemu Windows). Mówiąc to, nie mam nic przeciwko korzystaniu z usług stron trzecich, jeśli można je dołączyć do narzędzia, o ile nie jest ono ogromne i nie wprowadza żadnych interaktywnych kroków. Najlepiej byłoby, gdyby coś w interfejsie API systemu Windows było najlepsze, ale nie mogę znaleźć niczego odpowiedniego.

Obecnie narzędzie jest aplikacją C++, więc nie mam nic przeciwko temu, że jest to dość niski poziom.

Odpowiedz

7

Najpierw trzeba otworzyć magazynu certyfikatów głównego ...

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

Następnie dodać certyfikat przy użyciu jednej z funkcji, takich jak CertAdd CertAddEncodedCertificateToStore.

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

pCertData i cbCertData prawdopodobnie wskazują na danych certyfikatu zapoznanie z pliku (nie wiem, czy certyfikat będzie w pliku, lub w jaki sposób można umieścić go w aplikacji).

Następnie zamknąć sklep z ...

CertCloseStore(hRootCertStore,0); 

UWAGA: Ten kod jeśli uruchomić jako użytkownik instaluje certyfikat do magazynu głównego użytkownika, a nie Komputer jest. W wyniku tego pojawia się okno dialogowe z ostrzeżeniem, które użytkownik musi zrozumieć i wybrać opcję "Tak", aby autoryzować import. Jeśli program instalacyjny może uruchomić ten kod na koncie systemowym, import wpłynie na główny magazyn komputera i nie zostanie wyświetlone okno dialogowe z ostrzeżeniem.

0

Kilka próbek C++ w Windows SDK z MSDN

Po prostu skopiuj je.

2

możesz również sprawdzić CertAddEncodedCertificateToSystemStore

Powiązane problemy