Cloud Code Signing-integration med CircleCI

Denna handledning visar hur eSigner är integrerad med CircleCI för automatisk kodsignering.

eSigner är SSL.coms molnmiljö för kodsignering. Signeringsnycklar och certifikat lagras säkert i molnet av SSL.com och kan nås för signering från vilken internetansluten enhet som helst, vilket gör eSigner till en av de bästa plattformarna för företagskodsignering. eSigner-verktygslådan innehåller CodeSignTool som är en kommandoradsverktyg för EV-kodsignering certifikat och är idealiskt för att skapa automatiserade signeringsprocesser i olika plattformar för kontinuerlig integration/kontinuerlig leverans (CI/CD), inklusive CircleCI. 

SSL.com s EV Kodsignering certifikat hjälper till att skydda din kod från obehörig manipulering och kompromissa med den högsta nivån av validering, och är tillgängliga för så lite som $ 249 per år. Du kan också använd ditt EV Code Signing-certifikat i stor skala i molnet med eSigner.

BESTÄLL NU

Miljövariabler

  • USERNAME: Användarnamn för SSL.com-konto. (Nödvändig)
  • LÖSENORD: Lösenord för SSL.com-konto (krävs)
  • CREDENTIAL_ID: Autentiserings-ID för signering av certifikat. Om credential_id utelämnas och användaren bara har ett eSigner-kodsigneringscertifikat, kommer CodeSignTool att använda det som standard. Om användaren har mer än ett kodsigneringscertifikat är denna parameter obligatorisk. (Nödvändig)
  • TOTP_SECRET: OAuth TOTP-hemlighet. Du kan komma åt detaljerad information om https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Nödvändig)
  • ENVIRONMENT_NAME : 'TEST' eller 'PROD' miljö. (Nödvändig)

ingångar

  • input_file_path: Sökväg till kodobjekt som ska signeras. (Nödvändig)
  • output_dir_path: Katalog där signerade kodobjekt kommer att skrivas. Om output_path utelämnas kommer filen som anges i -file_path att skrivas över med den signerade filen.

Förbered komponenterna i arbetsflödet (.NET Code DLL-signering)

  1. Skapa en .circleci-mapp

På din arbetsyta för kodsignering skapar du en .circleci-mappen. Under den skapar du en config.yml filen.

  1. Ställ in CI-versionen
version: 2.1
 
  1.  Anropa jobb via arbetsflöden. Arbetsflöden orkestrerar en uppsättning jobb som ska köras. Jobben för denna pipeline konfigureras nedan

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

arbetsflöden:
 
  1. Skriv namnet på arbetsflödet.
  dotnet:
 
  1. Inuti arbetsflödet definierar du de jobb du vill köra.
 jobb: - bygga - tecken: kräver: - bygga
 

Definiera byggstadiet

  1. Definiera ett jobb som ska anropas senare i ett arbetsflöde.

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

jobb: bygga:

 

  1. Skapa en miljövariabel
  • Miljövariabler används för att göra proverna mer läsbara. I skärmdumpen ovan av ett exempel på ett arbetsflöde för signering utelämnades eventuellt PROJECT_NAME, PROJECT_VERSION och DOTNET_VERSION. Undertecknandet kan fortfarande fortsätta även med dessa utelämnanden.  
  miljö: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 DOTNET_VERSION: 3.1 ARBETSPLATS: /home/circleci/project

 

  1.  Definiera en Docker-exekutor: (https://circleci.com/docs/2.0/executor-types/)

    # Du kan ange en bild från Dockerhub eller använda en av våra bekvämlighetsbilder från CircleCIs utvecklarhubb.

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

 

  1. Placera arbetskatalogen för jobbet
  arbetskatalog: /home/circleci/project

 

  1. Lägg till steg i jobbet

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

  steg:

 

  1.  Kolla in källkoden så att arbetsflödet kan komma åt den.
    - kolla upp

 

  1. Skapa artefaktkatalog för att lagra signerade och osignerade artefaktfiler
    - run: name: Create Artifacts Directory kommando: | mkdir -p ${WORKSPACE}/artefakter mkdir -p ${WORKSPACE}/paket

 

  1.  Bygg ett dotnet-projekt eller -lösning och alla dess beroenden.
      - kör: namn: Bygg Dotnet-projektkommando: dotnet bygg dotnet/${PROJECT_NAME}.csproj -c Release

 

  1. Kopiera artefakt till artefaktkatalog
  • I det här skriftliga signeringsexemplet skapades flera projekttyper. Det är därför filer av olika projekttyper behölls genom att skapa undermappar. En undermapp med namnet 'dotnet' skapades för Dotnet-projekt. I demoskärmdumpen ovan behövdes det inte skapa en undermapp med namnet 'dotnet' så denna ingick inte i skriptet.
  - kör: namn: kommandot Kopiera artefakter: | cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll

 

  1. Behåll artefakten till artefaktkatalogen för signering
  - persist_to_workspace: root: . sökvägar: - paket/*
 

Definiera signeringsstadiet

  1. Definiera signeringsjobbet
 skylt:

 

  1. Skapa en miljövariabel
  • I skärmdumpen ovan definierades teckenkommandot direkt i teckenskriptet och inte under miljövariabler. Bandra metoder kan signera korrekt med CircleCI.
  • Miljövariabler används för att göra proverna mer läsbara. I skärmdumpen ovan av exempelarbetsflödet inkluderades vissa variabler eventuellt inte. Undertecknandet kan fortfarande fortsätta även med dessa utelämnanden.  
    miljö: ENVIRONMENT_NAME: PROD COMMAND: sign WORKSPACE: /home/circleci/project

 

  1.     Placera arbetskatalogen för jobbet på Circle-CI
 arbetskatalog: /home/circleci/project

 

  1. Artefaktnamn för signering
  • Värdet 'artefaktnamn' är ett alternativ för flera projekt. Parametern 'artefaktnamn' lades till så att samma signeringsdel kan användas för alla projekttyper. Eftersom exemplet i skärmdumpen är baserat på ett enskilt projekt var det inte nödvändigt att inkludera det.
    parametrar: artefaktnamn: typ: sträng standard: ''

 

  1. Definiera en docker-exekutor:

 För ytterligare referens, se: https://circleci.com/docs/2.0/executor-types/

       Du kan ange en bild från Dockerhub eller använda en av våra bekvämlighetsbilder från CircleCIs utvecklarhubb.

       Se till att uppdatera Docker-bildtaggen nedan till openjdk-versionen av din applikation.

       En lista över tillgängliga CircleCI Docker Convenience-bilder finns här: https://circleci.com/developer/images/image/cimg/openjdk

   docker: - bild: cimg/openjdk:17.0.3

 

  1. Lägg till steg i jobbet

      För ytterligare referens, se: https://circleci.com/docs/2.0/configuration-reference/#steps

    steg:

 

  1. Skapa artefaktkatalog för att lagra signerade och osignerade artefaktfiler
  - run: name: Create Artifacts Directory kommando: | mkdir -p ${WORKSPACE}/artefakter mkdir -p ${WORKSPACE}/paket

 

  1. Bifoga till Workspace för att komma åt artefaktfilen
   - attach_workspace: på: /home/circleci/project

 

  1. Aktivera Docker för CodeSigner på Circle-CI
 - setup_remote_docker: namn: Setup Remote Docker version: 19.03.13 docker_layer_caching: true

 

  1. Dra Codesigner Docker Image från Github Registry
        - kör: namn: Docker Pull Image kommando: | docker pull ghcr.io/sslcom/codesigner:senaste docker pull alpin:3.4

 

  1. Skriv steget där artefakten kommer att signeras med CodeSignTool.
 - kör: namn: Sign Artifact File kommando: | 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}/paket /<< parameters.artifact-name >> codesign-in:/codesign/packages docker run -i --rm --dns 8.8.8.8 --nätverksvärd --volymer-från codesign-in --volymer-från codesign- ut -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:late ${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/<< parametrar.artefaktnamn >>

 

  1. Skriv steget för att din artefakt ska laddas upp från ditt arbetsflöde så att du kan dela data mellan jobb och lagra data när ett arbetsflöde är klart
    - store_artifacts: namn: Ladda upp signerade filer sökväg: /home/circleci/project/artifacts/<< parameters.artifact-name >> destination: << parameters.artifact-name >>
 

Skapa ett nytt arkiv på kommandoraden

Kopiera push-kommandokomponenterna från platsen för ditt projekt på ditt GitHub-konto

Inkludera alla push-kommandokomponenter i din editor

SSL.com s EV Kodsignering certifikat hjälper till att skydda din kod från obehörig manipulering och kompromissa med den högsta nivån av validering, och är tillgängliga för så lite som $ 249 per år. Du kan också använd ditt EV Code Signing-certifikat i stor skala i molnet med eSigner.

BESTÄLL NU

Skapa ett projekt på CircleCI med hjälp av arkivet som är integrerat med GitHub

Definiera alla miljövariabler

Medan projektet körs klickar du på knappen Projektinställningar följt av Miljövariabler för att definiera variablerna

Placera värdena för varje variabel

Klicka på Lägg till miljövariabel knappen för att lägga till namn och värden för alla variabler som krävs för projektet.

Vänta på att projektet ska byggas

Klicka på Fortsätter till arbetsytan

Vänta kort på att arbetsytans arkiv ska laddas upp.

Klicka på teckenknappen

Vänta på att Remote Docker ska ställas in

Det kan ta mer än en minut, beroende på storleken på filen

Vänta på att artefakterna ska signeras

Klicka Artefakter fliken

Om du klickar Artefakter, kommer du att kunna se filen som du har kodsignerat. Du kommer också att meddelas av CircleCI om framgångsrik kodsignering.

Du kan hänvisa till SSL.com Github-arkivet som innehåller källkoderna för docker-bilden och beskriver hur du använder den: https://github.com/SSLcom/ci-images

Exempel CircleCI Pipeline

Kolla in exempel på CircleCI-pipeline vi har skapat på github.com/SSLcom/codesigner-circleci-sample

Andra CI/CD-integrationsguider för fjärrsignering

Behöver du anpassade lösningar? 

Med vår expertkunskap och femstjärniga supportpersonal är vi redo och villiga att arbeta med dig på skräddarsydda lösningar eller rabatter på stora volymer av signering på företagsnivå. Fyll i formuläret nedan så hör vi av oss.

Prenumerera på SSL.coms nyhetsbrev

Missa inte nya artiklar och uppdateringar från SSL.com

Håll dig informerad och säker

SSL.com är en global ledare inom cybersäkerhet, PKI och digitala certifikat. Registrera dig för att få de senaste branschnyheterna, tipsen och produktmeddelanden från SSL.com.

Vi vill gärna ha din feedback

Följ vår undersökning och låt oss veta vad du tycker om ditt senaste köp.