Cloud Code Signing-Integration mit CircleCI

Dieses Tutorial zeigt, wie eSigner für die automatisierte Code-Signierung in CircleCI integriert ist.

eSigner ist die Cloud-Umgebung von SSL.com für Codesignaturen. Signierschlüssel und Zertifikate werden sicher in der Cloud von SSL.com gehostet und können zum Signieren von jedem mit dem Internet verbundenen Gerät abgerufen werden, was eSigner zu einer der besten Plattformen für das Signieren von Unternehmenscodes macht. Das eSigner-Toolkit enthält CodeSignTool, bei dem es sich um ein Befehlszeilenprogramm für EV-Codesignatur Zertifikate und ist ideal für die Erstellung automatisierter Signierprozesse in verschiedenen Continuous Integration/Continuous Delivery (CI/CD)-Plattformen, einschließlich CircleCI. 

SSL.com EV Codesignatur Zertifikate helfen, Ihren Code vor unbefugter Manipulation und Kompromittierung mit dem höchsten Validierungsniveau zu schützen, und sind für so wenig wie erhältlich $ 249 pro Jahr. Sie können auch Verwenden Sie Ihr EV Code Signing-Zertifikat in großem Maßstab in der Cloud mit eSigner.

BESTELLEN SIE JETZT!

Umgebungsvariablen

  • USERNAME: Benutzername des SSL.com-Kontos. (Erforderlich)
  • PASSWORD: Kennwort für das SSL.com-Konto (erforderlich)
  • CREDENTIAL_ID: Anmelde-ID zum Signieren des Zertifikats. Wenn credential_id ausgelassen wird und der Benutzer nur ein eSigner-Codesignaturzertifikat hat, verwendet CodeSignTool standardmäßig dieses. Wenn der Benutzer über mehr als ein Codesignaturzertifikat verfügt, ist dieser Parameter obligatorisch. (Erforderlich)
  • TOTP_SECRET: OAuth-TOTP-Geheimnis. Detaillierte Informationen erhalten Sie unter https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Pflichtfeld)
  • UMGEBUNGSNAME : 'TEST'- oder 'PROD'-Umgebung. (Erforderlich)

Eingänge

  • Eingabedateipfad: Pfad des zu signierenden Codeobjekts. (Erforderlich)
  • Ausgabeverzeichnis_Pfad: Verzeichnis, in das signierte Codeobjekte geschrieben werden. Wenn output_path weggelassen wird, wird die in -file_path angegebene Datei mit der signierten Datei überschrieben.

Bereiten Sie die Komponenten des Workflows vor (.NET-Code-DLL-Signierung)

  1. Erstellen Sie einen .circleci-Ordner

Erstellen Sie in Ihrem Codesignatur-Arbeitsbereich eine .circleci-Ordner. Erstellen Sie darunter eine config.yml-Datei.

  1. Legen Sie die CI-Version fest
Version: 2.1
 
  1.  Rufen Sie Jobs über Workflows auf. Workflows orchestrieren eine Reihe von Jobs, die ausgeführt werden sollen. Die Jobs für diese Pipeline werden unten konfiguriert

Siehe: https://circleci.com/docs/2.0/configuration-reference/#workflows

Arbeitsabläufe:
 
  1. Schreiben Sie den Namen des Workflows.
  Punkt net:
 
  1. Innerhalb des Workflows definieren Sie die Jobs, die Sie ausführen möchten.
 Jobs: - Bauen - Zeichen: erfordert: - Bauen
 

Definieren Sie die Build-Phase

  1. Definieren Sie einen Job, der später in einem Workflow aufgerufen werden soll.

 (Siehe: https://circleci.com/docs/2.0/configuration-reference/#jobs)

Jobs: bauen:

 

  1. Erstellen Sie eine Umgebungsvariable
  • Umgebungsvariablen werden verwendet, um die Beispiele besser lesbar zu machen. Im obigen Screenshot eines beispielhaften Signatur-Workflows wurden PROJECT_NAME, PROJECT_VERSION und DOTNET_VERSION optional weggelassen. Die Unterzeichnung kann auch mit diesen Auslassungen fortgesetzt werden.  
  Umgebung: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 DOTNET_VERSION: 3.1 WORKSPACE: /home/circleci/project

 

  1.  Definieren Sie einen Docker-Executor: (https://circleci.com/docs/2.0/executor-types/)

    # Sie können ein Image von Dockerhub angeben oder eines unserer praktischen Images aus dem Developer Hub von CircleCI verwenden.

 Docker: - Bild: mcr.microsoft.com/dotnet/sdk:3.1-bullseye

 

  1. Legen Sie das Arbeitsverzeichnis für den Job ab
  Arbeitsverzeichnis: /home/circleci/project

 

  1. Fügen Sie dem Job Schritte hinzu

    Siehe: https://circleci.com/docs/2.0/configuration-reference/#steps

  Schritte:

 

  1.  Checken Sie den Quellcode aus, damit der Workflow darauf zugreifen kann.
    - Auschecken

 

  1. Erstellen Sie ein Artefaktverzeichnis, um signierte und unsignierte Artefaktdateien zu speichern
    - run: name: Create Artifacts Directory Befehl: | mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/packages

 

  1.  Erstellen Sie ein dotnet-Projekt oder eine dotnet-Lösung und alle ihre Abhängigkeiten.
      - run: name: Build Dotnet Project Command: dotnet build dotnet/${PROJECT_NAME}.csproj -c Release

 

  1. Artefakt in das Artefaktverzeichnis kopieren
  • In diesem Beispielworkflow für die schriftliche Unterzeichnung wurden mehrere Projekttypen erstellt. Aus diesem Grund wurden Dateien unterschiedlicher Projekttypen durch das Anlegen von Unterordnern gehalten. Für Dotnet-Projekte wurde ein Unterordner mit dem Namen „dotnet“ erstellt. Im obigen Demo-Screenshot musste kein Unterordner mit dem Namen „dotnet“ erstellt werden, sodass dieser nicht im Skript enthalten war.
  - run: name: Artefakte kopieren Befehl: | cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll

 

  1. Speichern Sie das Artefakt zum Signieren im Artefaktverzeichnis
  - persist_to_workspace: root: . Pfade: - Pakete/*
 

Definieren Sie die Unterzeichnungsphase

  1. Definieren Sie den Signierauftrag
 Schild:

 

  1. Erstellen Sie eine Umgebungsvariable
  • Im obigen Screenshot wurde der Sign-Befehl direkt im Sign-Skript und nicht unter Umgebungsvariablen definiert. BAndere Methoden können mit CircleCI korrekt signieren.
  • Umgebungsvariablen werden verwendet, um die Beispiele besser lesbar zu machen. Im obigen Screenshot des Beispiel-Workflows wurden einige Variablen optional nicht einbezogen. Die Unterzeichnung kann auch mit diesen Auslassungen fortgesetzt werden.  
    Umgebung: ENVIRONMENT_NAME: PROD COMMAND: Zeichen WORKSPACE: /home/circleci/project

 

  1.     Legen Sie das Arbeitsverzeichnis für den Job auf Circle-CI ab
 Arbeitsverzeichnis: /home/circleci/project

 

  1. Artefaktname zum Signieren
  • Der Wert „artifact-name“ ist eine Option für mehrere Projekte. Der Parameter „artifact-name“ wurde hinzugefügt, damit derselbe Signaturteil für alle Projekttypen verwendet werden kann. Da das Beispiel im Screenshot auf einem einzelnen Projekt basiert, war es nicht notwendig, es einzubinden.
    parameter: artefaktname: typ: string default: ''

 

  1. Definieren Sie einen Docker-Executor:

 Weitere Referenzen finden Sie unter: https://circleci.com/docs/2.0/executor-types/

       Sie können ein Image von Dockerhub angeben oder eines unserer praktischen Images aus dem Developer Hub von CircleCI verwenden.

       Stellen Sie sicher, dass Sie das Docker-Image-Tag unten auf die openjdk-Version Ihrer Anwendung aktualisieren.

       Eine Liste der verfügbaren CircleCI Docker Convenience Images finden Sie hier: https://circleci.com/developer/images/image/cimg/openjdk

   Docker: - Bild: cimg/openjdk:17.0.3

 

  1. Fügen Sie dem Job Schritte hinzu

      Weitere Referenzen finden Sie unter: https://circleci.com/docs/2.0/configuration-reference/#steps

    Schritte:

 

  1. Erstellen Sie ein Artefaktverzeichnis, um signierte und unsignierte Artefaktdateien zu speichern
  - run: name: Create Artifacts Directory Befehl: | mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/packages

 

  1. An Workspace anhängen, um auf die Artefaktdatei zuzugreifen
   - Attach_Workspace: unter: /home/circleci/project

 

  1. Aktivieren Sie Docker für CodeSigner auf Circle-CI
 - setup_remote_docker: name: Remote-Docker-Version einrichten: 19.03.13 docker_layer_caching: true

 

  1. Ziehen Sie das Codesigner-Docker-Image aus der Github-Registrierung
        - run: Name: Docker-Pull-Image-Befehl: | Docker-Pull ghcr.io/sslcom/codesigner:Neuester Docker-Pull Alpine:3.4

 

  1. Schreiben Sie den Schritt, in dem das Artefakt mit CodeSignTool signiert wird.
 - run: name: Artefaktdatei signieren Befehl: | docker create -v /codesign/packages --name codesign-in alpine:3.4 /bin/true docker create -v /codesign/artifacts --name codesign-out alpine:3.4 /bin/true docker cp ${WORKSPACE}/packages /<< parameter.artifact-name >> codesign-in:/codesign/packages docker run -i --rm --dns 8.8.8.8 --network host --volumes-from codesign-in --volumes-from codesign- out -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 ${COMMAND} -input_file_path=/codesign/packages/<< parameter.artifact-name >> -output_dir_path=/codesign/artifacts docker cp codesign-out:/codesign/artifacts/<< parameter.artifact-name >> ${ WORKSPACE}/artifacts/<< parameter.artifact-name >>

 

  1. Schreiben Sie den Schritt für Ihr Artefakt, das aus Ihrem Workflow hochgeladen werden soll, sodass Sie Daten zwischen Jobs austauschen und Daten speichern können, sobald ein Workflow abgeschlossen ist
    - store_artifacts: name: Signierte Dateien hochladen Pfad: /home/circleci/project/artifacts/<< parameter.artifact-name >> Ziel: << parameters.artifact-name >>
 

Erstellen Sie ein neues Repository in der Befehlszeile

Kopieren Sie die Push-Befehlskomponenten vom Speicherort Ihres Projekts in Ihr GitHub-Konto

Schließen Sie alle Push-Befehlskomponenten in Ihren Editor ein

SSL.com EV Codesignatur Zertifikate helfen, Ihren Code vor unbefugter Manipulation und Kompromittierung mit dem höchsten Validierungsniveau zu schützen, und sind für so wenig wie erhältlich $ 249 pro Jahr. Sie können auch Verwenden Sie Ihr EV Code Signing-Zertifikat in großem Maßstab in der Cloud mit eSigner.

BESTELLEN SIE JETZT!

Richten Sie ein Projekt auf CircleCI ein, indem Sie das in GitHub integrierte Repository verwenden

Definieren Sie alle Umgebungsvariablen

Klicken Sie, während das Projekt ausgeführt wird, auf die Schaltfläche Projekteinstellungen und dann auf Umgebungsvariablen, um die Variablen zu definieren

Platzieren Sie die Werte für jede Variable

Klicken Sie auf die Umgebungsvariable hinzufügen Schaltfläche, um die Namen und Werte aller für das Projekt erforderlichen Variablen hinzuzufügen.

Warten Sie, bis das Projekt erstellt wurde

Klicken Sie auf Persisting to workspace

Warten Sie kurz, bis das Workspace-Archiv erfolgreich hochgeladen wurde.

Klicken Sie auf die Schaltfläche „Signieren“.

Warten Sie, bis der Remote Docker eingerichtet ist

Je nach Größe der Datei kann es länger als eine Minute dauern

Warten Sie, bis die Artefakte signiert sind

Klicken Sie auf Kostenlos erhalten und dann auf Installieren. Artifacts Tab

Wenn Sie Artifacts, können Sie die Datei sehen, die Sie erfolgreich mit Code signiert haben. Sie werden auch von CircleCI über die erfolgreiche Codesignierung benachrichtigt.

Sie können auf das Github-Repository von SSL.com verweisen, das die Quellcodes des Docker-Images enthält und dessen Verwendung beschreibt: https://github.com/SSLcom/ci-images

Beispiel einer CircleCI-Pipeline

Sehen Sie sich die von uns erstellte Beispiel-CircleCI-Pipeline an github.com/SSLcom/codesigner-circleci-sample

Andere CI/CD-Remote-Signatur-Integrationsleitfäden

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.