2009-03-18 1 views
8

Wir haben gerade eine neue Remote-Access-Lösung mit dem Microsoft TS-Gateway eingerichtet, die ein paar etwas fummelig Schritte auf dem Endverbraucher Namen um (Installation es zum Laufen zu bringen, bedarf unserer Wurzel ca cert, Anforderung von RDP 6.1 Client etc).Installation Root CA Cert über Code auf Win32

Um diesen Setup-Prozess so einfach wie möglich zu machen (viele dieser Nutzer sind nicht technisch gesinnten), ich suche ein Programm erstellt automatisch all diese Aufgaben zu erfüllen. Ich habe die meiste Arbeit, aber ich bin nicht ganz sicher, wie man das Wurzel-CA-Zertifikat in den Windows-Zertifikatspeicher importiert.

Da dies möglicherweise auf einer Vielzahl von Computern mit verschiedenen Ebenen von Patches und Updates ausgeführt werden kann, leite ich .NET und alles, was nicht native ist - das Tool sollte einfach "ohne" laufen Benutzer muss alles extra installieren (gut, ich werde sagen, Windows XP, keine Service Packs, ist die erforderliche Mindestversion von Windows). Wenn ich das sage, macht es mir nichts aus, etwas Drittes zu verwenden, wenn es mit dem Tool gebündelt werden kann, solange es nicht riesig ist und keine interaktiven Schritte einführt. Im Idealfall wäre etwas in der Windows API am besten, aber ich kann nichts Relevantes finden.

Derzeit ist das Werkzeug eine C++ Anwendung, so dass ich nichts dagegen, wenn es recht niedriges Niveau Zeug.

Antwort

7

Zuerst müssen Sie die Stammzertifikatspeicher öffnen ...

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

Dann das Zertifikat hinzufügen Mithilfe der CertAdd Funktionen, wie CertAddEncodedCertificateToStore.

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

pCertData und cbCertData weisen darauf wahrscheinlich auf die Zertifikatsdaten, die Sie aus einer Datei lesen (nicht sicher, ob das Zertifikat in einer Datei sein, oder wie Sie es in Ihrer Anwendung enthalten).

Schließen Sie dann den Laden mit ...

CertCloseStore(hRootCertStore,0); 

HINWEIS: Dieser Code, wenn sie als Benutzer ausführen, installiert das Zertifikat dem Stammspeicher des Benutzers, nicht der Computer. Es führt auch zu einem Warndialog, den der Benutzer verstehen muss, und wählt "Ja", um den Import zu autorisieren. Wenn Ihr Setup-Programm diesen Code in einem Systemkonto ausführen kann, wirkt sich der Import auf den Stammspeicher des Computers aus, und es wird kein Dialogfeld angezeigt.

0

Mehrere C++ Proben in Windows SDK von MSDN

Kopieren Sie sie einfach.

2

können Sie auch CertAddEncodedCertificateToSystemStore

auschecken