Zertifikat-Management mit certutil automatisieren

    Die Batch-Datei für makecert.exe und certutil.exeDie Arbeit mit einer gut gestalteten GUI in Kommandozeilenwerkzeugen abzubilden ist nicht einfach, das Ergebnis wird oft trotzdem als unkomfortabel empfunden. Anders ist es bei immer wiederkehrenden Aufgaben, wie etwa der Erstellung und Verteilung von Computer-Zertifikaten innerhalb einer Arbeitsgruppe. Hier muss man ersteres ohnehin per Kommandozeile erledigen – da spart es Zeit und Nerven, auch die Verwaltung der Zertifikate per certutil.exe zu regeln.

    Per certutil.exe Zertifikate exportieren, importieren, löschen

    Bei immer wiederkehrenden Aufgaben läuft die Zertifikatverwaltung auf der Kommandozeile schnellerMit certutil.exe kann man prinzipiell alles machen, was auch eine Zertifikate-Konsole bietet. Entsprechend komplex ist das Tool – Microsoft hat dessen Hilfefunktion so, gestaltet, dass man außer der allgemeinen Kurzhilfe per Parameter -? diesen auch noch einmal nach jedem Parameter einsetzen kann, um wiederum dafür die Hilfe zu erhalten. Die allgemeine Befehlsreferenz hat Microsoft hier hinterlegt.

    In dem genannten Beispiel geht es darum, Zertifikate zunächst zu erstellen und in den Zertifikatspeicher zu laden. Danach exportiert man sie inklusive ihres privaten Schlüssels als PFX mit Passwort und löscht sie sofort wieder aus dem Zertifikatspeicher. Diese Routine ist spätestens nach dem dritten Mal per certutil.exe schneller erledigt als in der GUI. Die nötigen Aufrufe sind folgende

    certutil.exe -privatekey -p ‹Passwort› -exportpfx "‹CN-Name›" ‹Datei›.pfx
    certutil.exe -delstore My "‹CN-Name›"

    der erste exportiert das Zertifikat, der zweite löscht es aus dem Zertifikatspeicher.

    Auf der Zielmaschine importiert man die PFX-Datei dann mit

    certutil.exe -p ‹Passwort› -importpfx ‹Datei›.pfx

    Den Parameter -p kann man auf der Kommandozeile auch jeweils weglassen, certutil.exe erfragt das Passwort dann interaktiv.

    Batch-Datei für makecert.exe und certutil.exe

    Um beide Arbeitsschritte – Erstellen und Exportieren des Zertifikates für eine andere Maschine – zu automatisieren, ruft man am besten beide Befehle in einer Batch-Datei auf. Diese kann etwa folgenden Aufbau haben:

    @echo off IF [%1]==[] goto missing1
    IF [%2]==[] goto missing2
    SETLOCAL
    set PATH=%PATH%;"%ProgramFiles%\Microsoft SDKs\Windows\v7.1\Bin\x64"
    makecert.exe -pe -n "CN=%1" -a sha1 -sky exchange
    &nbsp -eku 1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2 -is root -ir LocalMachine
    -in "kroschel.com Test And Dev Root Authority" -ss My -sr LocalMachine
    -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
    certutil.exe -privatekey -p %2 -exportpfx "%1" %1.pfx
    certutil.exe -delstore My "%1"
    ENDLOCAL
    goto end
    :missing1
    echo missing argument: please enter machine name
    goto end
    :missing2
    echo missing argument: please enter password for PFX file
    goto end
    :end

    Sie erfordert ein installiertes Windows-SDK. Als ersten Parameter erwartet sie den Namen des Computers, für den das Zertifikat erstellt werden soll, als zweiten das Export-Passwort. Um sie zu verwenden, sind folgende Anpassungen notwendig:

    • Auf einem 32-Bit-System muss in Zeile 5 in der PATH-Erweiterung der Teil \x64 weggelassen werden,
    • beim Aufruf von makecert.exe in der nächsten Zeile muss man hinter dem Parameter -in seine eigene Root-CA statt der hier beispielhaft angegebenen kroschel.com Test And Dev Root Authority einsetzen.

    Keine Kommentare