Cloud Code Signing-Integration mit GitHub-Aktionen

Dieser Leitfadenartikel zeigt, wie eSigner in GitHub Actions integriert wird, um Codesignaturen in einem Continuous Integration/Continuous Delivery (CI/CD)-Setup zu ermöglichen.

eSigner ist unsere Cloud-basierte Signaturplattform, auf die Softwareentwickler auf der ganzen Welt vertrauen, um Code-Signaturen für Unternehmen durchzuführen, ohne dass USB-Token oder andere spezielle Hardware erforderlich sind.  Eine der Komponenten von eSigner ist CodeSignTool: ein datenschutzorientiertes Befehlszeilenprogramm, das für Entwickler, die Codesignaturen automatisieren möchten, äußerst effektiv ist.  Die folgenden Abschnitte zeigen, wie Sie einen Java-Code (Maven) auf GitHub Actions mit eSigner CodeSignTool signieren können.

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!

Anwendungsbereich

- Name: Artefakt mit CodeSignTool signieren

  verwendet: sslcom/actions-codesigner@develop

  mit:

  •      CodeSignTool-Befehle:

     - get_credential_ids: Gibt die Liste der eSigner-Anmeldeinformationen aus, die einem Benutzer zugeordnet sind.

     - credential_info: Geben Sie Schlüssel- und Zertifikatsinformationen in Bezug auf eine Anmeldeinformations-ID aus.

     - sign: Codeobjekt für Vorzeichen und Zeitstempel.

     - batch_sign: Signieren und Zeitstempeln mehrerer Codeobjekte mit einem OTP.

     - hash: Berechnen Sie Hash(s) für die spätere Verwendung mit dem Befehl batch_hash_sign vor.

     - batch_sign_hash: Mit dem Hash-Befehl vorberechnete Hash(s) signieren.

        Befehl: Schild

 

  • Benutzername des SSL.com-Kontos.

         username: ${{secrets.ES_USERNAME}}

  •  Kennwort für das SSL.com-Konto.

         password: ${{secrets.ES_PASSWORD}}

  • Anmelde-ID zum Signieren des Zertifikats.

         credential_id: ${{secrets.CREDENTIAL_ID}}

         totp_secret: ${{secrets.ES_TOTP_SECRET}}

  • Pfad des zu signierenden Codeobjekts.

          file_path: ${GITHUB_WORKSPACE}/test/src/build/HelloWorld.jar

  • Verzeichnis, in das signierte Codeobjekte geschrieben werden.

          output_path: ${GITHUB_WORKSPACE}/artifacts

 

Eingänge

  • Benutzername: Benutzername des SSL.com-Kontos. (Erforderlich)
  • Passwort: Kennwort für das SSL.com-Konto (erforderlich)
  • Anmeldeinformations-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)
  • Dateipfad: Pfad des zu signierenden Codeobjekts. (Erforderlich)
  • Ausgabepfad: Verzeichnis, in das signierte Codeobjekte geschrieben werden. Wenn output_path weggelassen wird, wird die in -file_path angegebene Datei mit der signierten Datei überschrieben.

Beispiel-Workflow für Java-Code (Maven) JAR-Signierung

Bereiten Sie die Komponenten des Workflows vor

  1. Erstellen Sie einen Github-Ordner in Ihrem Editor. Schließen Sie Workflows mit dem Ordner ein und erstellen Sie eine YML-Datei unter dem Ordner.
    1. Benennen Sie Ihr Projekt und die Art des betroffenen Workflows
    Name: Maven bauen und signieren
     
    1. Lösen Sie diesen Workflow bei einem Push aus
    ein: drücken
     
    1. Erstellen Sie eine Umgebungsvariable
    • Umgebungsvariablen werden verwendet, um die Beispiele besser lesbar zu machen. Im obigen Screenshot des Beispielworkflows wurden PROJECT_NAME, PROJECT_VERSION und MAVEN_VERSION optional weggelassen. Die Unterzeichnung kann auch mit diesen Auslassungen fortgesetzt werden.
    env: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 MAVEN_VERSION: 3.8.5 JAVA_VERSION: 17
     
    1. Definieren Sie die Jobs in Ihrem Editor
    Jobs: build-and-sign-jar:
     
    1. Führen Sie den Job auf Ubuntu Runner aus
        Läuft auf: ubuntu-neueste
     
    1. Erstellen Sie einen Namen. Wenn der Arbeitsablauf ausgeführt wird, ist dies der Name, der protokolliert wird.
      Name: CodeSigner auf Java mit Maven
     

Skizzieren Sie die Schritte zum Auschecken des Quellcodes, zum Einrichten der Java- und Maven-Umgebung und zum Erstellen des Artifact-Verzeichnisses.

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

   Schritte: - verwendet: Aktionen/checkout@v2
 

  2) Richten Sie die Java- und Maven-Umgebung für den zu verwendenden Workflow ein.

    - Name: Maven installieren und Java verwendet: s4u/setup-maven-action@v1.3.1 mit: Java-Version: '${{env.JAVA_VERSION}}' Maven-Version: '${{env.MAVEN_VERSION}}'

 

      3) Erstellen Sie ein Artefaktverzeichnis, um signierte und unsignierte Artefaktdateien zu speichern

 - name: Verzeichnis erstellen Shell: bash run: | mkdir ${GITHUB_WORKSPACE}/artifacts mkdir ${GITHUB_WORKSPACE}/packages

 

      4) Erstellen Sie ein Maven-Projekt oder eine Lösung und alle ihre Abhängigkeiten.

      Nachdem die JAR-Datei erstellt wurde, kopieren Sie sie zum Signieren in den Ordner „packages“.

  • 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 Java-Projekte wurde ein Unterordner mit dem Namen „java“ erstellt. Im obigen Demo-Screenshot war es nicht erforderlich, einen Unterordner mit dem Namen „java“ zu erstellen, sodass dieser nicht im Skript enthalten war.
 - name: Java-Projekt-Shell erstellen: bash run: | mvn clean install -f java/pom.xml cp java/target/${{env.PROJECT_NAME}}-${{env.PROJECT_VERSION}}.jar ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}. Krug
 

Skizzieren Sie die Schritte für die Sign- und Upload-Jobs

  1. Der Sign-Job ist der Schritt, in dem die erstellten JAR-Dateien (Artefaktdateien) mit CodeSignTool signiert werden.
 - Name: Sign Artifact verwendet: sslcom/actions-codesigner@develop mit:

           Zeichen- und Zeitstempelcodeobjekt.

Befehl: Zeichen

           Benutzername des SSL.com-Kontos.

Benutzername: ${{secrets.ES_USERNAME}}

           Kennwort für das SSL.com-Konto.

Passwort: ${{secrets.ES_PASSWORD}}

           Anmelde-ID zum Signieren des Zertifikats.

credential_id: ${{secrets.CREDENTIAL_ID}}

           OAuth TOTP-Geheimnis (https://www.ssl.com/how-to/automate-esigner-ev-code-signing)

totp_secret: ${{secrets.ES_TOTP_SECRET}}

           Pfad des zu signierenden Codeobjekts. (DLL-, JAR-, EXE-, MSI-Dateien vb…)

  Dateipfad: ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}.jar

           Verzeichnis, in das signierte Codeobjekte geschrieben werden.

Ausgabepfad: ${GITHUB_WORKSPACE}/artifacts

 

  1. Der Upload-Job ist der Schritt, in dem Artefakte aus Ihrem Workflow hochgeladen werden, sodass Sie Daten zwischen Jobs austauschen und Daten speichern können, sobald ein Workflow abgeschlossen ist
 - Name: Signierte Dateien hochladen verwendet: actions/upload-artifact@v2 mit: Name: ${{env.PROJECT_NAME}}.jar Pfad: ./artifacts/${{env.PROJECT_NAME}}.jar
 

Holen Sie sich einen Build-Artefakt-Uploader von Github Marketplace

Überprüfen Sie Ihr Codierungsskript

Insgesamt sollte das Codierungsskript für die Erstellungs-, Signierungs- und Upload-Jobs wie in der Abbildung unten aussehen. Achten Sie darauf, alle Fehler wie falsche Rechtschreibung oder fehlerhafte Zeilenumbrüche im Skript zu korrigieren, damit der Signiervorgang reibungslos abläuft.

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!

Definieren Sie Ihre Umgebungsvariablen

Gehen Sie in Ihrem Github-Konto zum Speicherort Ihres Projekts. Drücke den Aktionen Tab. Drücke den Neues Repository-Geheimnis Schaltfläche, um die Werte für jede Umgebungsvariable zu platzieren, die zum Signieren Ihres Codes erforderlich ist.

Erstellen Sie ein neues Repository in der Befehlszeile

Gehen Sie zum Speicherort Ihres Projekts auf Github und kopieren Sie jede Komponente des Push-Befehls.

Pushen Sie das Projekt

Fügen Sie jede Push-Befehlszeile in Ihren Code-Editor ein. Nach Abschluss wird der Code automatisch auf Github gepusht.

Warten Sie, bis das Artefakt mit eSigner CodeSignTool signiert wurde

Laden Sie die signierte Datei hoch

Klicken Sie auf die signierte Datei, um sie hochzuladen.

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

Beispiel einer Github-Aktionspipeline


Sehen Sie sich die von uns erstellte Beispiel-Pipeline für Github-Aktionen an github.com/SSLcom/codesigner-github-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.

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.