Cloud Code Signing-Integration mit Jenkins CI

Dies ist eine Anleitung zum automatisierten Signieren von Code auf Jenkins mithilfe von eSigner CodeSignTool.

CodeSignTool ist ein Befehlszeilendienstprogramm, das sich für Signaturen mit hohem Volumen eignet und sich nahtlos in verschiedene CI/CD-Plattformen integrieren lässt. Es ist Teil von eSigner: unserem Remote-Signaturdienst, der einen effizienten, sicheren und benutzerfreundlichen Ansatz für das Signieren von Unternehmenscodes bietet.

SSL.com EV Codesignatur Zertifikate Schützen Sie Ihren Code vor unbefugter Manipulation und Kompromittierung mit dem höchsten Validierungsniveau und sind für so wenig wie möglich erhältlich $ 249 pro Jahr.

KAUFEN SIE IHR SSL.COM EV CODE SIGNING-ZERTIFIKAT

Erstellen Sie eine Jenkins-Datei und definieren Sie die Pipeline in Ihrem Code-Editor

Pipeline {Agent beliebige Optionen {buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }

Richten Sie das .NET-Tool in Ihrem Code-Editor ein, indem Sie Jenkins konfigurieren

Klicken Sie auf die Verwalte Jenkins Registerkarte auf Ihrem Jenkins-Dashboard.

Scrollen Sie auf der Seite nach unten und klicken Sie auf Global Tool Configuration.

Scrollen Sie nach unten und klicken Sie auf .NET SDK-Installationen.

Kopieren Sie den Wert für .NET SDK und fügen Sie ihn in Ihren Code-Editor ein.

Tools { dotnetsdk "DOTNET_CORE_3.1.24" }

Gehen Sie zu plugins.jenkins.io und installieren Sie das .NET SDK-Plugin

Der Verwalte Jenkins Überprüfen Sie auf Ihrem Dashboard Plugins verwalten um zu bestätigen, ob das .NET SDK-Plugin installiert wurde.

Nachdem Sie bestätigt haben, dass das Plugin installiert wurde, gehen Sie zurück zu .NET SDK-INSTALLATIONEN und stellen Sie sicher, dass die richtige Version und die Release-Details des .NET SDK-Plugins eingestellt sind. Fahren Sie mit dem Klicken fort Speichern .

Legen Sie die Umgebungsvariablen in Ihrem Code-Editor fest

Umgebung { BENUTZERNAME = Anmeldeinformationen ('es-Benutzername') // Benutzername des SSL.com-Kontos. PASSWORD = Credentials('es-password') // Passwort für das SSL.com-Konto. CREDENTIAL_ID = Credentials('es-crendential-id') // Credential-ID zum Signieren des Zertifikats. TOTP_SECRET = Credentials('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com-Umgebungsname. Für das Demo-Konto kann es 'TEST' sein, andernfalls 'PROD' }

Sie finden die Werte für jede Variable auf Ihrem Jenkins-Dashboard unter Sicherheit> Verwalten Referenzen.

 

Legen Sie die Phasen für das Erstellen des Artefaktverzeichnisses, das Pullen des Docker-Images, das Erstellen von .NET und das Code-Signieren des Artefakts fest

 

        1) Artefaktverzeichnis erstellen, um signierte und unsignierte Artefaktdateien zu speichern.
 stage('Artefaktverzeichnis erstellen') { Schritte { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }
        2) Ziehen Sie das Codesigner-Docker-Image aus der Github-Registrierung.
stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }
        3) Erstellen Sie ein dotnet-Projekt oder eine Dotnet-Lösung und alle ihre Abhängigkeiten. Nachdem die DLL- oder EXE-Datei erstellt wurde, kopieren Sie sie zum Signieren in den Ordner „packages“.
stage('Build Dotnet') { steps { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/ HelloWorld.dll' } }
        4) In diesem Schritt werden die erstellten DLL-Dateien (Artefaktdateien) mit CodeSignTool signiert.
stage('Sign and Save Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- Volume ${WORKSPACE}/artifacts:/codesign/output -e USERNAME=${USERNAME} -e PASSWORD=${PASSWORD} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e ENVIRONMENT_NAME=${ ENVIRONMENT_NAME} ghcr.io/sslcom/codesigner:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts artifacts: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }

SSL.com EV Codesignatur Zertifikate Schützen Sie Ihren Code vor unbefugter Manipulation und Kompromittierung mit dem höchsten Validierungsniveau und sind für so wenig wie möglich erhältlich $ 249 pro Jahr.

KAUFEN SIE IHR SSL.COM EV CODE SIGNING-ZERTIFIKAT

Erstellen Sie ein Github-Repository

Kopieren Sie jede der Push-Befehlskomponenten auf Github.

Schreiben Sie die Befehle an einem neuen Terminal in Ihrem Code-Editor, um den Code zu pushen.

Gehen Sie nach dem Pushen des Codes zu Ihrem Github-Konto und kopieren Sie den URL-Link Ihres Projekts.

Gehen Sie zu Ihrem Jenkins-Konto und klicken Sie auf die Erstellen Sie einen Job Link.

Auswählen  Multibranch-Pipeline, Legen Sie den Namen für Ihr Projekt fest und klicken Sie auf OK .

Der BranchenquellenWählen Git und fügen Sie den URL-Link Ihres Github-Projekts ein.

Scrollen Sie nach unten Scannen Sie Multibranch-Pipeline-Trigger. Aktivieren Sie das Kontrollkästchen für Periodisch, wenn nicht anders ausgeführt. Sie können auswählen 2 Мinuten.

Klicken Sie auf die Speichern .

Gehen Sie zurück zu Ihrem Jenkins-Konto, klicken Sie auf Ihr Projekt und bestätigen Sie, ob die Pipeline gestartet wurde

Klicken Sie auf Ihr Jenkins-Projekt und wählen Sie es aus Jetzt Multibranch-Pipeline scannen im Dashboard.

Klicken Sie auf Kostenlos erhalten und dann auf Installieren. Konsolenausgabe

Scrollen Sie nach unten und prüfen Sie, ob die Code-Signierung erfolgreich war

Gesamtes Skript

Hinweis: Achten Sie darauf, Tippfehler oder fehlerhafte Zeilenumbrüche im Skript zu korrigieren, damit der Signiervorgang reibungslos abläuft.

Definieren Sie die Pipeline

Pipeline {Agent beliebige Optionen {buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }

Build-Tools installieren

Tools { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }

Erstellen Sie eine Umgebungsvariable

Umgebung { BENUTZERNAME = Anmeldeinformationen ('es-Benutzername') // Benutzername des SSL.com-Kontos. PASSWORD = Credentials('es-password') // Passwort für das SSL.com-Konto. CREDENTIAL_ID = Credentials('es-crendential-id') // Credential-ID zum Signieren des Zertifikats. TOTP_SECRET = Credentials('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com-Umgebungsname. Für das Demo-Konto kann es 'TEST' sein, andernfalls 'PROD' }

Skript für die Phasen Build und Sign

stages { // 1) Artefaktverzeichnis zum Speichern von signierten und unsignierten Artefaktdateien erstellen stage('Artefaktverzeichnis erstellen') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Codesigner-Docker-Image aus der Github-Registrierung ziehen stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) Erstellen Sie ein Dotnet-Projekt oder eine Dotnet-Lösung und all das seine Abhängigkeiten. // Nachdem die DLL- oder Exe-Datei erstellt wurde, kopieren Sie sie zum Signieren in den Ordner „packages“. Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/HelloWorld.dll' } } // 4) In diesem Schritt werden die erstellten DLL-Dateien (Artefaktdateien) mit CodeSignTool signiert. stage('Sign and Save Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- Volume ${WORKSPACE}/artifacts:/codesign/output -e USERNAME=${USERNAME} -e PASSWORD=${PASSWORD} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e ENVIRONMENT_NAME=${ ENVIRONMENT_NAME} ghcr.io/sslcom/codesigner:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts artifacts: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Sie können auf die verweisen SSL.com Github-Repository, das die Quellcodes des Docker-Images enthält und dessen Verwendung beschreibt: https://github.com/SSLcom/ci-images 

Beispiel einer Jenkins-Pipeline

Sehen Sie sich die Beispiel-Jenkins-Pipeline an, die wir erstellt haben github.com/SSLcom/codesigner-jenkins-sample

Andere Leitfäden zur Integration von Remote-Signaturen

Benötigen Sie kundenspezifische Lösungen? 

Mit unserem Expertenwissen und unserem Fünf-Sterne-Support-Personal sind wir bereit und bereit, mit Ihnen an kundenspezifischen Lösungen oder Rabatten für Großseriensignaturen auf Unternehmensebene zu arbeiten. Füllen Sie das untenstehende Formular aus und wir melden uns bei Ihnen.

Abonnieren Sie den Newsletter von SSL.com

Verpassen Sie keine neuen Artikel und Updates von SSL.com

Bleiben Sie informiert und sicher

SSL.com ist ein weltweit führendes Unternehmen im Bereich Cybersicherheit, PKI und digitale Zertifikate. Melden Sie sich an, um die neuesten Branchennachrichten, Tipps und Produktankündigungen von zu erhalten SSL.com.

Wir würden uns über Ihr Feedback freuen

Nehmen Sie an unserer Umfrage teil und teilen Sie uns Ihre Meinung zu Ihrem letzten Kauf mit.