Azure DevOps-Integrationshandbuch
Die Integration von CodeSign Secure in Azure DevOps verbessert Ihre CI/CD-Pipelines durch die Automatisierung des Signaturprozesses. Dadurch wird sichergestellt, dass jeder Build sicher und effizient signiert wird, manuelle Fehler reduziert und die Vertrauenswürdigkeit Ihrer Software-Lieferkette gestärkt wird.
CodeSign Secure KSP einrichten
Der Encryption Consulting Key Storage Provider (KSP) für Windows ist eine Softwarekomponente, die das Microsoft Cryptography API: Next Generation (CNG)-Framework erweitert. Sein Hauptzweck besteht darin, Windows-Anwendungen wie signtool.exe die nahtlose Interaktion mit den in einem HSM gespeicherten kryptografischen Schlüsseln und Zertifikaten zu ermöglichen.
Schritte:
-
Laden Sie das EC KSP herunter
-
Melden Sie sich beim CodeSign Secure-Portal an und navigieren Sie zum Abschnitt „Signing Tools“, um „EC KSP für Windows“ herunterzuladen.
- Extrahieren Sie die ZIP-Datei, um die Datei „Setup.msi“ zu erhalten.
-
-
Installieren Sie den EC KSP
-
Führen Sie das Installationsprogramm „Setup.msi“ mit Administratorrechten aus.
-
Folgen Sie den Anweisungen des Installationsassistenten auf dem Bildschirm.
- Akzeptieren Sie die Endbenutzer-Lizenzvereinbarung.
- Wählen Sie das Installationsverzeichnis (der Standard ist C:\Programme\Encryption Consulting\SigningKSP).
- Wählen Sie, ob Sie das KSP für alle oder nur für den aktuellen Benutzer installieren möchten
-
Geben Sie die angeforderten Details ein, beispielsweise:
- Benutzername: Der Benutzername/die E-Mail-Adresse, die Sie zum Anmelden beim CodeSign Secure-Portal verwenden.
- Code: Der Geheimcode, den Sie beim Einrichten der CodeSign Secure-Lösung festgelegt haben.
- Identitätstyp: Dieses Feld als Standard beibehalten (2)
- CodeSign Secure URL: Die URL für den Zugriff auf das Portal (Denken Sie daran, am Ende der URL „/api/“ hinzuzufügen)
-
Klicken Sie auf Weiter und bestätigen Sie die Installation.
-
-
Konfigurieren Sie die Einstellungen des Registrierungseditors
-
Öffnen Sie den Registrierungseditor und navigieren Sie zum Verzeichnis HKEY_CURRENT_USER>Software>Encryption Consulting>SigningKSP.
-
Öffnen Sie nun das CodeSign Secure-Portal und navigieren Sie zu System-Setup > Benutzer. Wählen Sie im Dropdown-Menü auf der rechten Seite „API-Schlüssel generieren“ aus.
-
Erstellen Sie ein Token für Ihr Konto, indem Sie einen Namen und eine Gültigkeitsdauer angeben. Denken Sie daran, das Token zu kopieren, da es nur einmal angezeigt wird.
-
Fügen Sie dieses Token zum Feld „ectoken“ im Registrierungseditor hinzu.
-
Einrichten des P12-Authentifizierungszertifikats
Zum Einrichten eines P12-Zertifikats müssen Sie Ihre Umgebungsvariablen konfigurieren, um Ihren Clientcomputer mit CodeSign Secure von Encryption Consulting zu authentifizieren.
Schritte:
-
Konfigurieren der Umgebungsvariablen
-
Öffnen Sie die Umgebungsvariablen über Ihr Startmenü
-
Fügen Sie neue Systemvariablen hinzu, indem Sie auf die Schaltfläche „Neu“ klicken. Geben Sie den folgenden Variablennamen und die entsprechenden Details an.
- EC_Client_Auth: Entspricht dem Pfad Ihres SSL-Authentifizierungszertifikats, das von CodeSignSecure erstellt werden kann
- EC_Client_Pass: Entspricht dem Passwort Ihres Zertifikats, das bei der Erstellung des Zertifikats angegeben wird.
- EC_SSL_VERBOSE: Entspricht der Einstellung, die Debug-Ausgabe für EC KSP entweder zu aktivieren (1) oder zu deaktivieren (0).
-
Einrichten von Signtool zum Signieren
Beim Einrichten von Signtool für die Codesignatur müssen Sie sicherstellen, dass das Dienstprogramm Signtool.exe auf Ihrem Computer verfügbar und für die korrekte Interaktion mit dem Kryptografieanbieter von Encryption Consulting konfiguriert ist, der Zugriff auf den privaten Schlüssel Ihres Codesignaturzertifikats bietet.
Schritte:
-
Herunterladen und Installieren des Windows SDK
-
Laden Sie über den folgenden Download-Link das Windows Software Development Kit mit den folgenden ausgewählten Tools herunter: developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/
-
Öffnen Sie das Installationsprogramm nach dem Download und wählen Sie auf dem ersten Bildschirm „Weiter“, um die Standardeinstellungen beizubehalten.
-
Folgen Sie den Anweisungen des Installationsassistenten auf dem Bildschirm.
- Akzeptieren Sie die Datenschutzbestimmungen des Windows Kit.
- Akzeptieren Sie die Endbenutzer-Lizenzvereinbarung.
-
Deaktivieren Sie alles außer „Windows SDK Signing Tools for Desktop Apps“ und wählen Sie „Installieren“.
-
Gehen Sie zum folgenden Pfad, in den die Tools heruntergeladen worden sein sollten: „C:\Programme (x86)\Windows Kits\10\bin“. Wählen Sie das gewünschte Versionsverzeichnis aus und prüfen Sie, ob die Datei „signtool.exe“ vorhanden ist.
- Stellen Sie sicher, dass Sie sich im x64-Verzeichnis befinden, und kopieren Sie diesen Verzeichnispfad.
-
-
Pfad zu Signtool.exe in Umgebungsvariablen hinzufügen
-
Öffnen Sie die Umgebungsvariablen über das Startmenü.
-
Scrollen Sie durch die Systemvariablen in der unteren Tabelle nach unten, bis Sie PATH in den Variablennamen finden.
-
Doppelklicken Sie in den Systemvariablen auf PATH und wählen Sie links auf dem Bildschirm Neu. Fügen Sie den kopierten Verzeichnispfad von „signtool.exe“ in die neue Auswahl ein.
- Wählen Sie unten „OK“ aus, um die Seite „Umgebungsvariablen“ zu verlassen.
-
Einrichten von Azure DevOps
Das Einrichten von Azure DevOps umfasst die Konfiguration Ihrer Azure DevOps-Organisation, Ihres Projekts und insbesondere Ihrer Build-Pipelines zum Signieren von Dateien mithilfe von Signtool auf einem Windows-Computer.
Schritte:
-
Erstellen eines Azure DevOps-Projekts
- Navigieren Sie zu dev.azure.com und melden Sie sich mit Ihrem Microsoft-Konto an. Alternativ können Sie auch kostenlos mit Ihrem GitHub-Konto beginnen.
-
Geben Sie die Details wie aufgefordert ein
- Sie werden aufgefordert, eine Organisation zu erstellen, falls Sie dies noch nicht getan haben. Erstellen Sie eine Organisation und beginnen Sie mit dem Projekt.
-
Wenn Sie bereits ein Projekt haben, in dem Sie die Pipeline erstellen möchten, navigieren Sie zu „Pipelines“. Andernfalls erstellen Sie zunächst ein einfaches Projekt. Geben Sie die erforderlichen Details ein, um fortzufahren.
-
Erstellen eines persönlichen Zugriffstokens
-
Nachdem ein Projekt erstellt wurde, navigieren Sie zu den Benutzereinstellungen in der oberen linken Ecke Ihres Bildschirms und klicken Sie auf „Persönliches Zugriffstoken“. Klicken Sie auf der nächsten Seite auf „Neues Token“.
-
Geben Sie im angezeigten Dialogfeld die erforderlichen Details ein, z. B. den Namen des Tokens und den Namen der Organisation (die Organisation, die Sie zuvor erstellt/auf die Sie zuvor zugegriffen haben). Legen Sie Ablaufdatum und Geltungsbereich fest. Ich habe den Geltungsbereich auf Vollzugriff eingestellt.
- Klicken Sie auf „Erstellen“ und kopieren Sie das Token irgendwohin, da Sie das Token nicht mehr sehen können.
-
-
Einrichten und Herunterladen eines Agenten
-
Nachdem wir ein Token erhalten haben, müssen wir einen selbstgehosteten Runner einrichten. Dies ist eine Maschine, auf der Signtool und ECSigningKSP installiert und konfiguriert sind. Kehren Sie dazu zur Codeübersicht zurück. Unten links auf dem Bildschirm sehen Sie die Projekteinstellungen. Klicken Sie darauf.
-
Unter „Pipelines“ sehen Sie „Agent Pools“. Klicken Sie darauf und dann auf „Standard“.
-
Klicken Sie oben links auf den neuen Agenten.
-
Holen Sie sich den Agenten entsprechend Ihrem Betriebssystem. Ich verwende Windows. Laden Sie den Agenten herunter und extrahieren Sie ihn in den Ordner „C:\agents“. Sie können auch diesem folgen Dokumentation für weitere Hilfe dabei.
-
-
Konfigurieren des Agenten
- Navigieren Sie nach dem Extrahieren der Dateien von cmd zu dem Ordner, in den Sie sie extrahiert haben, und führen Sie .\config.cmd aus.
-
Die Server-URL lautet nun https://dev.azure.com/<your_organization_name>
Drücken Sie beim Authentifizierungstyp einfach die Eingabetaste für PAT und geben Sie bei der nächsten Frage das zuvor kopierte Token ein.
- Sobald der Agent registriert ist, drücken Sie die Eingabetaste für den Agentenpool, da dieser standardmäßig aktiviert ist. Wenn Sie Ihrem Agenten einen Namen geben möchten, können Sie ihn benennen. Drücken Sie die Eingabetaste, damit er CLIENT heißt.
- Sobald der Agent hinzugefügt wurde, können Sie den Arbeitsordner als Standard belassen oder nach Ihren Wünschen ändern. Geben Sie für die Ausführung des Agenten als Dienst „Y“ (Ja) ein. Stellen Sie für das für den Dienst zu verwendende Benutzerkonto sicher, dass Sie dies als Administrator festlegen. Dies ist wichtig, da Sie Administratorrechte benötigen, um die Codesignatur durchzuführen. Geben Sie das Kennwort für Ihr Administratorkonto auf Ihrem Computer ein
- Da wir dies als Dienst festgelegt haben, wird der Agent automatisch ausgeführt. Hätten wir dies nicht als Dienst festgelegt, müssten wir den Agent manuell ausführen.
- Navigieren Sie zu services.msc und scrollen Sie nach unten zu Azure Pipeline Agent. Dort sehen Sie, dass Sie die Anmeldung als Administrator aktiviert haben. Falls nicht, können Sie dies selbst ändern. Klicken Sie einfach auf „Anmelden“. Ein Dialogfeld wird angezeigt. Navigieren Sie zur Anmeldung, aktivieren Sie die Anmeldung als Administrator, geben Sie das entsprechende Kennwort ein und starten Sie den Dienst neu. Kehren Sie anschließend zu Azure DevOps zurück, um die Pipeline zu erstellen.
-
Erstellen der Pipeline auf Azure DevOps
-
Klicken Sie zum Starten auf „Pipelines“ in Azure DevOps und auf der folgenden Seite auf „Pipeline erstellen“.
-
Wählen Sie auf der nächsten Seite im Abschnitt „Verbinden“ den Speicherort Ihres Codes aus. Mein Code befindet sich auf GitHub, und ich fahre damit fort. Sie benötigen Administratorrechte für Ihr Repository, um Zugriff zu gewähren.
-
Wählen Sie das Repository aus, in dem sich Ihr Code befindet.
-
Klicken Sie nun im Abschnitt „Konfigurieren“ auf „Starter-Pipeline“, falls noch keine YML-Datei in Ihrem Repository vorhanden ist. Ist dies der Fall, klicken Sie auf „Vorhandene Azure-Pipeline“. Für die Starter-Pipeline müssen Sie möglicherweise einen neuen Zweig erstellen oder einen Commit im Hauptzweig selbst ausführen.
-
Schreiben Sie im Editor das folgende Skript
Bitte ersetzen Sie die angegebenen Variablen unter . Nachfolgend finden Sie eine kurze Beschreibung der erwarteten Variable.
- : Dies bezieht sich auf den kryptografischen Schlüssel, der zum Signieren des Codes verwendet wird. Beispiel: evcodesigning
- : Sie müssen den Namen eines Hash-Algorithmus angeben, z. B. SHA256, SHA384 oder SHA512. Es muss einer dieser drei Werte sein.
- : Geben Sie den Pfad zum Codesignaturzertifikat an, das Sie vom CodeSign Secure-Portal erhalten haben.
- : Ein Zeitstempelserver liefert den Nachweis, dass eine digitale Signatur zu einem bestimmten Zeitpunkt erstellt wurde. So lässt sich später überprüfen, ob eine Datei zu einem bestimmten Zeitpunkt signiert wurde. Wir verwenden üblicherweise den Server http://timestamp.digicert.com.
- : Hier geben Sie den Pfad der Datei an, die Sie signieren möchten. Beispiel: C:\ \ . Stellen Sie sicher, dass Sie einen Dateinamen mit der richtigen Erweiterung angegeben haben.
Hinweis: Im Abschnitt „Variablen“ müssen Sie dieselben Felder und Werte angeben, die Sie in Ihrer Umgebungsvariable für das P12-Authentifizierungszertifikat festgelegt haben.
-
-
Ausführen der Azure DevOps-Pipeline
Wenn Sie auf „Speichern und ausführen“ klicken, werden Sie zur Eingabe eines Branch-Tags aufgefordert. Stellen Sie sicher, dass der hier und unter „Trigger“ im Skript angegebene Name identisch ist, bevor Sie das Skript ausführen.
Sobald der Build erfolgreich ist, sehen Sie, dass Ihre Datei erfolgreich signiert wurde.
