Integratie van Cloud Code Signing met CircleCI

Deze tutorial laat zien hoe eSigner is geïntegreerd met CircleCI voor geautomatiseerde code-ondertekening.

eSigner is de cloudomgeving van SSL.com voor het ondertekenen van codes. Ondertekeningssleutels en certificaten worden veilig gehost in de cloud door SSL.com en zijn toegankelijk voor ondertekening vanaf elk apparaat met internetverbinding, waardoor eSigner een van de beste platforms is voor het ondertekenen van bedrijfscodes. De eSigner-toolkit bevat CodeSignTool, een opdrachtregelprogramma voor EV-code ondertekenen certificaten en is ideaal voor het creëren van geautomatiseerde ondertekeningsprocessen in verschillende Continuous Integration/Continuous Delivery (CI/CD)-platforms, waaronder CircleCI. 

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

Omgevingsvariabelen

  • USERNAME: gebruikersnaam van SSL.com-account. (Verplicht)
  • WACHTWOORD: SSL.com-accountwachtwoord (vereist)
  • CREDENTIAL_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)
  • OMGEVING_NAME : 'TEST' of 'PROD' omgeving. (Verplicht)

Ingangen

  • invoer_bestandspad: Pad van codeobject dat moet worden ondertekend. (Verplicht)
  • output_dir_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.

Bereid de componenten van de workflow voor (.NET Code DLL-ondertekening)

  1. Maak een .circleci-map

Maak op uw werkruimte voor codeondertekening een .circleci-map. Maak eronder een config.yml-bestand.

  1. Stel de CI-versie in
versie: 2.1
 
  1.  Oproepen oproepen via workflows. Werkstromen orkestreren een reeks taken die moeten worden uitgevoerd. De taken voor deze pijplijn worden hieronder geconfigureerd:

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

werkstromen:
 
  1. Schrijf de naam van de werkstroom.
  punt net:
 
  1. Binnen de workflow definieert u de taken die u wilt uitvoeren.
 jobs: - bouwen - teken: vereist: - bouwen
 

Definieer de bouwfase

  1. Definieer een taak die later in een workflow moet worden aangeroepen.

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

banen: bouwen:

 

  1. Een omgevingsvariabele maken
  • Omgevingsvariabelen worden gebruikt om de voorbeelden leesbaarder te maken. In de bovenstaande schermafbeelding van een voorbeeld van een ondertekeningsworkflow zijn de PROJECT_NAME, PROJECT_VERSION en DOTNET_VERSION optioneel weggelaten. Zelfs met deze omissies kan het ondertekenen nog steeds doorgaan.  
  omgeving: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 DOTNET_VERSION: 3.1 WERKRUIMTE: /home/circleci/project

 

  1.  Definieer een Docker-uitvoerder: (https://circleci.com/docs/2.0/executor-types/)

    # U kunt een afbeelding van Dockerhub specificeren of een van onze gemaksafbeeldingen van CircleCI's Developer Hub gebruiken.

 docker: - afbeelding: mcr.microsoft.com/dotnet/sdk:3.1-bullseye

 

  1. Plaats de werkmap voor de taak
  werkmap: /home/circleci/project

 

  1. Stappen toevoegen aan de taak

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

  stappen:

 

  1.  Bekijk de broncode zodat de workflow er toegang toe heeft.
    - uitchecken

 

  1. Maak een artefactmap om ondertekende en niet-ondertekende artefactbestanden op te slaan
    - run: naam: Create Artifacts Directory commando: | mkdir -p ${WORKSPACE}/artefacten mkdir -p ${WORKSPACE}/pakketten

 

  1.  Bouw een dotnet-project of -oplossing en al zijn afhankelijkheden.
      - run: naam: Build Dotnet Project Commando: dotnet build dotnet/${PROJECT_NAME}.csproj -c Release

 

  1. Kopieer artefact naar map met artefacten
  • In deze schriftelijke ondertekeningsvoorbeeldworkflow zijn meerdere projecttypen gemaakt. Dit is de reden waarom bestanden van verschillende projecttypes werden bewaard door submappen te maken. Voor Dotnet-projecten is een submap gemaakt met de naam 'dotnet'. In de demo-screenshot hierboven was het niet nodig om een ​​submap met de naam 'dotnet' aan te maken, dus deze was niet opgenomen in het script.
  - run: naam: Copy Artifacts commando: | cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll

 

  1. Houd het artefact in de map met artefacten voor ondertekening
  - persist_to_workspace: root: . paden: - pakketten/*
 

Definieer de ondertekeningsfase

  1. Definieer de ondertekeningstaak
 teken:

 

  1. Een omgevingsvariabele maken
  • In de bovenstaande schermafbeelding is de sign-opdracht rechtstreeks in het sign-script gedefinieerd en niet onder omgevingsvariabelen. Bandere methoden kunnen correct ondertekenen met CircleCI.
  • Omgevingsvariabelen worden gebruikt om de voorbeelden leesbaarder te maken. In de bovenstaande schermafbeelding van de voorbeeldworkflow zijn sommige variabelen optioneel niet opgenomen. Zelfs met deze omissies kan het ondertekenen nog steeds doorgaan.  
    omgeving: ENVIRONMENT_NAME: PROD COMMAND: sign WORKSPACE: /home/circleci/project

 

  1.     Plaats de werkmap voor de job op Circle-CI
 werkmap: /home/circleci/project

 

  1. Artefactnaam voor ondertekening
  • De waarde 'artefact-naam' is een optie voor meerdere projecten. De parameter 'artefact-naam' is toegevoegd zodat hetzelfde signeergedeelte voor alle projecttypes kan worden gebruikt. Aangezien het voorbeeld in de schermafbeelding gebaseerd is op een enkel project, was het niet nodig om het op te nemen.
    parameters: artifact-name: type: string default: ''

 

  1. Definieer een docker-uitvoerder:

 Zie voor aanvullende referentie: https://circleci.com/docs/2.0/executor-types/

       U kunt een afbeelding van Dockerhub specificeren of een van onze gemaksafbeeldingen van CircleCI's Developer Hub gebruiken.

       Zorg ervoor dat u de Docker-afbeeldingstag hieronder bijwerkt naar de openjdk-versie van uw toepassing.

       Een lijst met beschikbare CircleCI Docker-gemaksafbeeldingen is hier beschikbaar: https://circleci.com/developer/images/image/cimg/openjdk

   docker: - afbeelding: cimg/openjdk:17.0.3

 

  1. Stappen toevoegen aan de taak

      Zie voor aanvullende referentie: https://circleci.com/docs/2.0/configuration-reference/#steps

    stappen:

 

  1. Maak een artefactmap om ondertekende en niet-ondertekende artefactbestanden op te slaan
  - run: naam: Create Artifacts Directory commando: | mkdir -p ${WORKSPACE}/artefacten mkdir -p ${WORKSPACE}/pakketten

 

  1. Bijvoegen aan Workspace om toegang te krijgen tot het artefactbestand
   - attach_workspace: op: /home/circleci/project

 

  1. Schakel Docker voor CodeSigner in op Circle-CI
 - setup_remote_docker: naam: Setup Remote Docker-versie: 19.03.13 docker_layer_caching: true

 

  1. Codesigner Docker-afbeelding uit Github-register halen
        - run: naam: Docker Pull Image-opdracht: | docker pull ghcr.io/sslcom/codesigner: nieuwste docker pull alpine: 3.4

 

  1. Schrijf de stap waar het artefact zal worden ondertekend met CodeSignTool.
 - voer uit: naam: Sign Artifact File-commando: | 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 /<< parameters.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/<< parameters.artifact-name >> -output_dir_path=/codesign/artifacts docker cp codesign-out:/codesign/artifacts/<< parameters.artifact-name >> ${ WORKSPACE}/artifacts/<< parameters.artifact-name >>

 

  1. Schrijf de stap voor het uploaden van uw artefact vanuit uw workflow, zodat u gegevens tussen taken kunt delen en gegevens kunt opslaan zodra een workflow is voltooid
    - store_artifacts: naam: Upload ondertekende bestanden pad: /home/circleci/project/artifacts/<< parameters.artifact-name >> bestemming: << parameters.artifact-name >>
 

Maak een nieuwe repository op de opdrachtregel

Kopieer de push-opdrachtcomponenten van de locatie van uw project op uw GitHub-account

Voeg alle push-commandocomponenten toe aan uw editor

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

Zet een project op CircleCI op met behulp van de repository die is geïntegreerd in GitHub

Definieer alle omgevingsvariabelen

Terwijl het project loopt, klikt u op de knop Projectinstellingen gevolgd door Omgevingsvariabelen om de variabelen te definiëren

Plaats de waarden voor elke variabele

Klik op de Omgevingsvariabele toevoegen om de namen en waarden van alle variabelen die nodig zijn voor het project toe te voegen.

Wacht tot het project is gebouwd

Klik op Aanhoudend om werkruimte

Wacht even tot het werkruimtearchief succesvol is geüpload.

Klik op de tekenknop

Wacht tot de Remote Docker is ingesteld

Het kan meer dan een minuut duren, afhankelijk van de grootte van het bestand

Wacht tot de artefacten zijn ondertekend

Klik Artifacts tab

Als u klikt Artifacts, kunt u het bestand zien waarvan u de code succesvol hebt ondertekend. U wordt ook door CircleCI op de hoogte gebracht van de succesvolle ondertekening van de code.

U kunt verwijzen naar de SSL.com Github-repository die de broncodes van de docker-afbeelding bevat en beschrijft hoe deze te gebruiken: https://github.com/SSLcom/ci-images

Voorbeeld CircleCI-pijplijn

Bekijk het voorbeeld van de CircleCI-pijplijn waarop we hebben gemaakt github.com/SSLcom/codesigner-circleci-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.

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.