Integratie van Cloud Code Signing met GitHub-acties

Dit gidsartikel laat zien hoe eSigner is geïntegreerd met GitHub Actions voor geautomatiseerde code-ondertekening in een Continuous Integration/Continuous Delivery (CI/CD)-configuratie.

eSigner is ons cloudgebaseerde ondertekeningsplatform dat wordt vertrouwd door softwareontwikkelaars over de hele wereld voor het ondertekenen van bedrijfscodes zonder dat USB-tokens of andere gespecialiseerde hardware nodig zijn.  Een van de componenten van eSigner is CodeSignTool: een op privacy gebaseerd hulpprogramma voor de opdrachtregel dat zeer effectief is voor ontwikkelaars die het ondertekenen van code willen automatiseren.  De volgende secties laten zien hoe u een Java-code (Maven) op GitHub Actions kunt ondertekenen met eSigner CodeSignTool.

SSL.com's EV Code ondertekening certificaten helpen uw code te beschermen tegen ongeautoriseerde manipulatie en compromittering met het hoogste validatieniveau, en zijn beschikbaar voor slechts $ 249 per jaar. Je kan ook gebruik uw EV Code Signing-certificaat op schaal in de cloud met eSigner.

BESTEL NU

Gebruik

- naam: Artefact ondertekenen met CodeSignTool

  toepassingen: sslcom/actions-codesigner@develop

  met:

  •      CodeSignTool-opdrachten:

     - get_credential_ids: Voer de lijst uit met eSigner-referentie-ID's die aan een gebruiker zijn gekoppeld.

     - credential_info: Uitvoersleutel en certificaatinformatie met betrekking tot een referentie-ID.

     - sign: teken- en tijdstempelcode-object.

     - batch_sign: Onderteken en tijdstempel meerdere code-objecten met één OTP.

     - hash: Pre-bereken hash(es) voor later gebruik met de opdracht batch_hash_sign.

     - batch_sign_hash: teken hash(es) vooraf berekend met hash-opdracht.

        opdracht: teken

 

  • gebruikersnaam van SSL.com-account.

         username: ${{secrets.ES_USERNAME}}

  •  SSL.com-accountwachtwoord.

         password: ${{secrets.ES_PASSWORD}}

  • Referentie-ID voor ondertekeningscertificaat.

         credential_id: ${{secrets.CREDENTIAL_ID}}

         totp_secret: ${{secrets.ES_TOTP_SECRET}}

  • Pad van codeobject dat moet worden ondertekend.

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

  • Directory waar ondertekende code-object(en) worden geschreven.

          output_path: ${GITHUB_WORKSPACE}/artifacts

 

Ingangen

  • gebruikersnaam: gebruikersnaam van SSL.com-account. (Verplicht)
  • wachtwoord: SSL.com-accountwachtwoord (vereist)
  • referentie_id: Referentie-ID voor ondertekeningscertificaat. Als credential_id wordt weggelaten en de gebruiker slechts één eSigner-certificaat voor het ondertekenen van code heeft, zal CodeSignTool dat standaard gebruiken. Als de gebruiker meer dan één code-ondertekeningscertificaat heeft, is deze parameter verplicht. (Verplicht)
  • totp_geheim: OAuth TOTP-geheim. U hebt toegang tot gedetailleerde informatie over: https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Verplicht)
  • bestandspad: Pad van codeobject dat moet worden ondertekend. (Verplicht)
  • uitvoer_pad: Directory waar ondertekende code-object(en) zullen worden geschreven. Als output_path wordt weggelaten, wordt het bestand gespecificeerd in -file_path overschreven door het ondertekende bestand.

Java-code (Maven) JAR-ondertekeningsvoorbeeld workflow

Bereid de componenten van de workflow voor

  1. Maak een Github-map op uw editor. Voeg workflows toe aan de map en maak een yml-bestand onder de map.
    1. Geef uw project een naam en het type workflow dat erbij betrokken is
    Naam: Maven Build and Sign
     
    1. Activeer deze workflow met een push
    aan: duwen
     
    1. Een omgevingsvariabele maken
    • Omgevingsvariabelen worden gebruikt om de voorbeelden leesbaarder te maken. In de bovenstaande schermafbeelding van de voorbeeldworkflow zijn de PROJECT_NAME, PROJECT_VERSION en MAVEN_VERSION optioneel weggelaten. Zelfs met deze omissies kan het ondertekenen nog steeds doorgaan.
    env: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 MAVEN_VERSION: 3.8.5 JAVA_VERSION: 17
     
    1. Definieer de taken op uw editor
    jobs: build-and-sign-jar:
     
    1. Taak uitvoeren op Ubuntu Runner
        draait op: ubuntu-nieuwste
     
    1. Maak een naam. Wanneer de workflow wordt uitgevoerd, is dit de naam die wordt vastgelegd.
      naam: CodeSigner op Java met Maven
     

Beschrijf de stappen voor het uitchecken van de broncode, het instellen van de Java- en Maven-omgeving en het maken van Artifact Directory.

  1) Bekijk de broncode zodat de workflow er toegang toe heeft.

   stappen: - gebruikt: actions/checkout@v2
 

  2) Stel de Java- en Maven-omgeving in voor de workflow die moet worden gebruikt.

    - naam: installeer Maven en Java gebruikt: s4u/setup-maven-action@v1.3.1 met: java-versie: '${{env.JAVA_VERSION}}' maven-versie: '${{env.MAVEN_VERSION}}'

 

      3) Maak een artefactmap om ondertekende en niet-ondertekende artefactbestanden op te slaan

 - naam: Directory-shell maken: bash run: | mkdir ${GITHUB_WORKSPACE}/artefacten mkdir ${GITHUB_WORKSPACE}/pakketten

 

      4) Bouw een maven-project of -oplossing en al zijn afhankelijkheden.

      Nadat het jar-bestand is gemaakt, kopieert u naar de map 'packages' om te ondertekenen

  • In deze schriftelijke ondertekeningsvoorbeeldworkflow zijn meerdere projecttypen gemaakt. Dit is de reden waarom bestanden van verschillende projecttypes werden bewaard door submappen te maken. Er is een submap met de naam 'java' gemaakt voor Java-projecten. In de demo-screenshot hierboven was het niet nodig om een ​​submap met de naam 'java' te maken, dus deze was niet opgenomen in het script.
 - naam: Build Java Project shell: bash run: | mvn schone installatie -f java/pom.xml cp java/target/${{env.PROJECT_NAME}}-${{env.PROJECT_VERSION}}.jar ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}. kan
 

Geef een overzicht van de stappen voor de onderteken- en uploadtaken

  1. De Sign-taak is de stap waarbij de gemaakte JAR-bestanden (artefact) worden ondertekend met CodeSignTool.
 - naam: Sign Artifact gebruikt: sslcom/actions-codesigner@develop met:

           Teken en tijdstempel code-object.

commando: teken

           gebruikersnaam van SSL.com-account.

gebruikersnaam: ${{secrets.ES_USERNAME}}

           SSL.com-accountwachtwoord.

wachtwoord: ${{secrets.ES_PASSWORD}}

           Referentie-ID voor ondertekeningscertificaat.

credential_id: ${{geheimen.CREDENTIAL_ID}}

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

totp_secret: ${{geheimen.ES_TOTP_SECRET}}

           Pad van codeobject dat moet worden ondertekend. (DLL, JAR, EXE, MSI-bestanden vb...)

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

           Directory waar ondertekende code-object(en) worden geschreven.

uitvoerpad: ${GITHUB_WORKSPACE}/artefacten

 

  1. De uploadtaak is de stap waar artefacten uit uw workflow worden geüpload, zodat u gegevens tussen taken kunt delen en gegevens kunt opslaan zodra een workflow is voltooid
 - naam: Ondertekende bestanden uploaden gebruikt: acties/upload-artifact@v2 met: naam: ${{env.PROJECT_NAME}}.jar pad: ./artifacts/${{env.PROJECT_NAME}}.jar
 

Download een build-artefact-uploader van Github Marketplace

Controleer uw codeerscript

Over het algemeen zou het codeerscript voor de buld-, sign- en uploadtaken eruit moeten zien als de onderstaande afbeelding. Zorg ervoor dat u eventuele fouten, zoals verkeerde spelling of foutieve regeleinden in het script, corrigeert, zodat het ondertekeningsproces soepel verloopt.

SSL.com's EV Code ondertekening certificaten helpen uw code te beschermen tegen ongeautoriseerde manipulatie en compromittering met het hoogste validatieniveau, en zijn beschikbaar voor slechts $ 249 per jaar. Je kan ook gebruik uw EV Code Signing-certificaat op schaal in de cloud met eSigner.

BESTEL NU

Definieer uw omgevingsvariabelen

Ga naar de locatie van je project op je Github-account. Klik op de Acties tab. Klik op de Nieuw repositorygeheim om de waarden voor elke omgevingsvariabele te plaatsen die vereist zijn bij het ondertekenen van uw code.

Maak een nieuwe repository op de opdrachtregel

Ga naar de locatie van uw project op Github en kopieer elk onderdeel van de push-opdracht.

Duw het project

Neem elke push-opdrachtregel op in uw code-editor. Na voltooiing wordt de code automatisch op Github gepusht.

Wacht tot het artefact is ondertekend met eSigner CodeSignTool

Upload het ondertekende bestand

Klik op het ondertekende bestand om het te uploaden.

Opmerking: zorg ervoor dat u typografische fouten of foutieve regeleinden in het script corrigeert, zodat het ondertekeningsproces soepel verloopt.

Voorbeeld Github Actions-pijplijn


Bekijk de voorbeeld Github Actions-pijplijn waarop we hebben gemaakt github.com/SSLcom/codesigner-github-sample  

Andere integratiehandleidingen voor CI/CD Remote Signing

Oplossingen op maat nodig? 

Met onze deskundige kennis en vijfsterrenondersteuningspersoneel staan ​​we klaar en bereid om met u samen te werken aan aangepaste oplossingen of grote ondertekeningskortingen op ondernemingsniveau. Vul het onderstaande formulier in en we nemen contact met je op.

Abonneer u op de nieuwsbrief van SSL.com

Mis geen nieuwe artikelen en updates van SSL.com

Blijf geïnformeerd en veilig

SSL.com is een wereldleider op het gebied van cyberbeveiliging, PKI en digitale certificaten. Meld u aan om het laatste branchenieuws, tips en productaankondigingen te ontvangen van SSL.com.

We willen graag uw feedback

Vul onze enquête in en laat ons uw mening over uw recente aankoop weten.