Cloud Code Signing-integration med CircleCI

Denne vejledning viser, hvordan eSigner er integreret med CircleCI til automatisk kodesignering.

eSigner er SSL.coms cloud-miljø til kodesignering. Signeringsnøgler og certifikater hostes sikkert i skyen af ​​SSL.com og kan tilgås til signering fra enhver internetforbundet enhed, hvilket gør eSigner til en af ​​de bedste platforme til virksomhedskodesignering. eSigner-værktøjssættet inkluderer CodeSignTool, som er en kommandolinjeværktøj til EV-kodesignering certifikater og er ideel til at skabe automatiserede signeringsprocesser i forskellige Continuous Integration/Continuous Delivery (CI/CD) platforme inklusive CircleCI. 

SSL.com s EV Kodesignering certifikater hjælper med at beskytte din kode mod uautoriseret manipulation og gå på kompromis med det højeste niveau af validering og er tilgængelige for så lidt som $ 249 pr. Du kan også brug dit EV Code Signing-certifikat i stor skala i skyen ved hjælp af eSigner.

BESTIL NU

Miljøvariabler

  • USERNAME: SSL.com konto brugernavn. (Påkrævet)
  • PASSWORD: SSL.com kontoadgangskode (påkrævet)
  • CREDENTIAL_ID: Legitimations-id til signering af certifikat. Hvis credential_id er udeladt, og brugeren kun har ét eSigner-kodesigneringscertifikat, vil CodeSignTool som standard være det. Hvis brugeren har mere end ét kodesigneringscertifikat, er denne parameter obligatorisk. (Påkrævet)
  • TOTP_SECRET: OAuth TOTP-hemmelighed. Du kan få adgang til detaljerede oplysninger om https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Påkrævet)
  • ENVIRONMENT_NAME : 'TEST' eller 'PROD' miljø. (Påkrævet)

Indgange

  • input_file_path: Sti til kodeobjekt, der skal signeres. (Påkrævet)
  • output_dir_path: Bibliotek, hvor signeret kodeobjekt(er) vil blive skrevet. Hvis output_path er udeladt, vil filen specificeret i -file_path blive overskrevet med den signerede fil.

Forbered komponenterne i arbejdsgangen (.NET Code DLL-signering)

  1. Opret en .circleci-mappe

På dit kodesigneringsarbejdsområde skal du oprette en .circleci mappe. Under den skal du oprette en config.yml fil.

  1. Indstil CI-versionen
version: 2.1
 
  1.  Påkald jobs via arbejdsgange. Arbejdsgange orkestrerer et sæt job, der skal køres. Jobbene for denne pipeline er konfigureret nedenfor

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

arbejdsgange:
 
  1. Skriv navnet på arbejdsgangen.
  dotnet:
 
  1. Inde i arbejdsgangen definerer du de jobs, du vil køre.
 jobs: - bygge - tegn: kræver: - bygge
 

Definer byggefasen

  1. Definer et job, der skal kaldes senere i en arbejdsgang.

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

jobs: bygge:

 

  1. Opret en miljøvariabel
  • Miljøvariabler bruges til at gøre prøverne mere læsbare. I skærmbilledet ovenfor af et eksempel på signeringsarbejdsgang blev PROJECT_NAME, PROJECT_VERSION og DOTNET_VERSION eventuelt udeladt. Underskrivelsen kan stadig fortsætte selv med disse udeladelser.  
  miljø: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 DOTNET_VERSION: 3.1 WORKSPACE: /home/circleci/project

 

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

    # Du kan angive et billede fra Dockerhub eller bruge et af vores bekvemmelighedsbilleder fra CircleCI's Developer Hub.

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

 

  1. Placer arbejdsbiblioteket for jobbet
  arbejdsmappe: /home/circleci/project

 

  1. Tilføj trin til jobbet

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

  trin:

 

  1.  Tjek kildekoden, så arbejdsgangen kan få adgang til den.
    - kassen

 

  1. Opret artefaktmappe for at gemme signerede og usignerede artefaktfiler
    - run: name: Create Artifacts Directory-kommando: | mkdir -p ${WORKSPACE}/artefakter mkdir -p ${WORKSPACE}/pakker

 

  1.  Byg et dotnet-projekt eller -løsning og alle dets afhængigheder.
      - Kør: navn: Byg Dotnet-projektkommando: dotnet byg dotnet/${PROJECT_NAME}.csproj -c Udgivelse

 

  1. Kopiér artefakt til artefaktbibliotek
  • I dette skriftlige underskriftseksempel workflow blev der oprettet flere projekttyper. Dette er grunden til, at filer af forskellige projekttyper blev opbevaret ved at oprette undermapper. En undermappe ved navn 'dotnet' blev oprettet til Dotnet-projekter. I demo-skærmbilledet ovenfor var der ikke behov for at oprette en undermappe ved navn 'dotnet', så denne var ikke inkluderet i scriptet.
  - run: name: Copy Artifacts kommando: | cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll

 

  1. Vedvarer artefakten til artefaktbiblioteket til signering
  - persist_to_workspace: root: . stier: - pakker/*
 

Definer signeringsstadiet

  1. Definer signeringsjobbet
 skilt:

 

  1. Opret en miljøvariabel
  • I skærmbilledet ovenfor blev sign-kommandoen defineret direkte i sign-scriptet og ikke under miljøvariabler. Bandre metoder kan signere korrekt med CircleCI.
  • Miljøvariabler bruges til at gøre prøverne mere læsbare. I skærmbilledet ovenfor af eksempelworkflowet var nogle variabler eventuelt ikke inkluderet. Underskrivelsen kan stadig fortsætte selv med disse udeladelser.  
    miljø: ENVIRONMENT_NAME: PROD KOMMANDO: underskriv WORKSPACE: /home/circleci/project

 

  1.     Placer arbejdsbiblioteket for jobbet på Circle-CI
 arbejdsmappe: /home/circleci/project

 

  1. Artefaktnavn til signering
  • Værdien 'artefaktnavn' er en mulighed for flere projekter. Parameteren 'artefaktnavn' blev tilføjet, så den samme signaturdel kan bruges til alle projekttyper. Da eksemplet i skærmbilledet er baseret på et enkelt projekt, var det ikke nødvendigt at inkludere det.
    parametre: artefakt-navn: type: streng standard: ''

 

  1. Definer en docker executor:

 For yderligere reference, se: https://circleci.com/docs/2.0/executor-types/

       Du kan angive et billede fra Dockerhub eller bruge et af vores bekvemmelighedsbilleder fra CircleCI's Developer Hub.

       Sørg for at opdatere Docker-billedtagget nedenfor til openjdk-versionen af ​​din applikation.

       En liste over tilgængelige CircleCI Docker Convenience-billeder er tilgængelig her: https://circleci.com/developer/images/image/cimg/openjdk

   docker: - billede: cimg/openjdk:17.0.3

 

  1. Tilføj trin til jobbet

      For yderligere reference, se: https://circleci.com/docs/2.0/configuration-reference/#steps

    trin:

 

  1. Opret artefaktmappe for at gemme signerede og usignerede artefaktfiler
  - run: name: Create Artifacts Directory-kommando: | mkdir -p ${WORKSPACE}/artefakter mkdir -p ${WORKSPACE}/pakker

 

  1. Vedhæft til Workspace for at få adgang til artefaktfilen
   - attach_workspace: på: /home/circleci/project

 

  1. Aktiver Docker for CodeSigner på Circle-CI
 - setup_remote_docker: navn: Setup Remote Docker version: 19.03.13 docker_layer_caching: true

 

  1. Træk Codesigner Docker-billede fra Github Registry
        - run: name: Docker Pull Image kommando: | docker pull ghcr.io/sslcom/codesigner:nyeste docker pull alpine:3.4

 

  1. Skriv det trin, hvor artefakten vil blive signeret med CodeSignTool.
 - run: name: Sign Artifact File kommando: | docker create -v /codesign/packages --navn codesign-in alpine:3.4 /bin/true docker create -v /codesign/artifacts --name codesign-out alpine:3.4 /bin/true docker cp ${WORKSPACE}/pakker /<< parameters.artifact-name >> codesign-in:/codesign/packages docker run -i --rm --dns 8.8.8.8 --netværksvært --volumes-fra codesign-in --volumes-fra codesign- ud -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/<< parametre.artefaktnavn >>

 

  1. Skriv trinnet for, at dit artefakt skal uploades fra dit workflow, så du kan dele data mellem job og gemme data, når et workflow er færdigt
    - store_artifacts: navn: Upload signerede filer sti: /home/circleci/project/artifacts/<< parameters.artifact-name >> destination: << parameters.artifact-name >>
 

Opret et nyt lager på kommandolinjen

Kopier push-kommandokomponenterne fra placeringen af ​​dit projekt på din GitHub-konto

Inkluder alle push-kommandokomponenter i din editor

SSL.com s EV Kodesignering certifikater hjælper med at beskytte din kode mod uautoriseret manipulation og gå på kompromis med det højeste niveau af validering og er tilgængelige for så lidt som $ 249 pr. Du kan også brug dit EV Code Signing-certifikat i stor skala i skyen ved hjælp af eSigner.

BESTIL NU

Opsæt et projekt på CircleCI ved hjælp af repository, der er integreret i GitHub

Definer alle miljøvariabler

Mens projektet kører, skal du klikke på knappen Projektindstillinger efterfulgt af Miljøvariabler for at definere variablerne

Placer værdierne for hver variabel

Klik på knappen Tilføj miljøvariabel knappen for at tilføje navne og værdier for alle variabler, der kræves til projektet.

Vent på, at projektet bliver bygget

Klik på Vedvarende til arbejdsområdet

Vent kort på, at arbejdsområdearkivet bliver uploadet.

Klik på tegnknappen

Vent på, at Remote Docker er konfigureret

Det kan tage mere end et minut, afhængigt af filens størrelse

Vent på, at artefakterne er underskrevet

Klik Artifacts fanen

Hvis du klikker på Artifacts, vil du kunne se den fil, som du har kodesigneret. Du vil også blive underrettet af CircleCI om den vellykkede kodesignering.

Du kan henvise til SSL.com Github-lageret, som indeholder kildekoderne til docker-billedet og beskriver, hvordan du bruger det: https://github.com/SSLcom/ci-images

Prøve CircleCI Pipeline

Tjek prøven af ​​CircleCI-pipeline, vi har oprettet på github.com/SSLcom/codesigner-circleci-sample

Andre CI/CD Remote Signing Integration Guides

Brug for tilpassede løsninger? 

Med vores ekspertviden og femstjernede supportmedarbejdere er vi klar til og villige til at arbejde sammen med dig om skræddersyede løsninger eller store signeringsrabatter på virksomhedsniveau. Udfyld formularen nedenfor, så kontakter vi dig.

Abonner på SSL.coms nyhedsbrev

Gå ikke glip af nye artikler og opdateringer fra SSL.com

Hold dig informeret og sikker

SSL.com er en global leder inden for cybersikkerhed, PKI og digitale certifikater. Tilmeld dig for at modtage de seneste industrinyheder, tips og produktmeddelelser fra SSL.com.

Vi vil meget gerne have din feedback

Tag vores undersøgelse og fortæl os dine tanker om dit seneste køb.