Cloud Code Signing-integrasjon med CircleCI

Denne opplæringen viser hvordan eSigner er integrert med CircleCI for automatisert kodesignering.

eSigner er SSL.coms skymiljø for kodesignering. Signeringsnøkler og sertifikater er trygt hostet i skyen av SSL.com og kan nås for signering fra hvilken som helst Internett-tilkoblet enhet, noe som gjør eSigner til en av de beste plattformene for signering av bedriftskode. eSigner-verktøysettet inkluderer CodeSignTool som er en kommandolinjeverktøy for EV-kode signering sertifikater og er ideell for å lage automatiserte signeringsprosesser i ulike Continuous Integration/Continuous Delivery (CI/CD)-plattformer inkludert CircleCI. 

SSL.coms EV Kodesignering sertifikater bidrar til å beskytte koden din mot uautorisert tukling og kompromiss med det høyeste nivået av validering, og er tilgjengelige for så lite som $ 249 per år. Du kan også bruk EV Code Signing-sertifikatet i stor skala i skyen ved hjelp av eSigner.

BESTILL NÅ

Miljøvariabler

  • USERNAME: SSL.com-konto brukernavn. (Obligatorisk)
  • PASSORD: SSL.com-kontopassord (påkrevd)
  • CREDENTIAL_ID: Legitimasjons-ID for signering av sertifikat. Hvis credential_id er utelatt og brukeren bare har ett eSigner-kodesigneringssertifikat, vil CodeSignTool som standard bruke det. Hvis brukeren har mer enn ett kodesigneringssertifikat, er denne parameteren obligatorisk. (Obligatorisk)
  • TOTP_SECRET: OAuth TOTP-hemmelighet. Du kan få tilgang til detaljert informasjon om https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Nødvendig)
  • ENVIRONMENT_NAME : 'TEST' eller 'PROD' miljø. (Obligatorisk)

Innganger

  • input_file_path: Banen til kodeobjektet som skal signeres. (Obligatorisk)
  • output_dir_path: Katalog hvor signert kodeobjekt(er) vil bli skrevet. Hvis output_path er utelatt, vil filen spesifisert i -file_path bli overskrevet med den signerte filen.

Forbered komponentene i arbeidsflyten (.NET Code DLL-signering)

  1. Opprett en .circleci-mappe

På arbeidsområdet for kodesignering oppretter du en .circleci-mappen. Under den lager du en config.yml-filen.

  1. Still inn CI-versjonen
versjon: 2.1
 
  1.  Påkalle jobber via arbeidsflyter. Arbeidsflyter orkestrerer et sett med jobber som skal kjøres. Jobbene for denne rørledningen er konfigurert nedenfor

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

arbeidsflyter:
 
  1. Skriv navnet på arbeidsflyten.
  dotnet:
 
  1. Inne i arbeidsflyten definerer du jobbene du vil kjøre.
 jobber: - bygge - tegn: krever: - bygge
 

Definer byggestadiet

  1. Definer en jobb som skal startes senere i en arbeidsflyt.

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

jobber: bygge:

 

  1. Lag en miljøvariabel
  • Miljøvariabler brukes for å gjøre prøvene mer lesbare. I skjermbildet ovenfor av et eksempel på signeringsarbeidsflyt, ble PROJECT_NAME, PROJECT_VERSION og DOTNET_VERSION eventuelt utelatt. Signering kan fortsatt fortsette selv med disse utelatelsene.  
  miljø: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 DOTNET_VERSION: 3.1 ARBEIDSPLASS: /home/circleci/project

 

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

    # Du kan spesifisere et bilde fra Dockerhub eller bruke et av våre bekvemmelighetsbilder fra CircleCIs utviklerhub.

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

 

  1. Plasser arbeidskatalogen for jobben
  arbeidskatalog: /home/circleci/project

 

  1. Legg til trinn i jobben

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

  trinn:

 

  1.  Sjekk ut kildekoden slik at arbeidsflyten får tilgang til den.
    - Sjekk ut

 

  1. Opprett artefaktkatalog for å lagre signerte og usignerte artefaktfiler
    - run: name: Create Artifacts Directory-kommando: | mkdir -p ${WORKSPACE}/artefakter mkdir -p ${WORKSPACE}/pakker

 

  1.  Bygg et dotnet-prosjekt eller -løsning og alle dets avhengigheter.
      - run: name: Build Dotnet Project Command: dotnet build dotnet/${PROJECT_NAME}.csproj -c Release

 

  1. Kopier artefakt til artefaktkatalog
  • I denne skriftlige signeringseksemplet ble det opprettet flere prosjekttyper. Dette er grunnen til at filer av forskjellige prosjekttyper ble beholdt ved å opprette undermapper. En undermappe kalt 'dotnet' ble opprettet for Dotnet-prosjekter. I demoskjermbildet ovenfor var det ikke nødvendig å opprette en undermappe kalt 'dotnet', så dette var ikke inkludert i skriptet.
  - kjør: navn: Kopier artefakter kommando: | cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll

 

  1. Hold artefakten til artefaktkatalogen for signering
  - persist_to_workspace: rot: . stier: - pakker/*
 

Definer signeringsstadiet

  1. Definer signeringsjobben
 skilt:

 

  1. Lag en miljøvariabel
  • I skjermbildet ovenfor ble skiltkommandoen definert direkte i skiltskriptet og ikke under miljøvariabler. Bandre metoder kan signere riktig med CircleCI.
  • Miljøvariabler brukes for å gjøre prøvene mer lesbare. I skjermbildet ovenfor av eksempelarbeidsflyten var noen variabler valgfritt ikke inkludert. Signering kan fortsatt fortsette selv med disse utelatelsene.  
    miljø: ENVIRONMENT_NAME: PROD KOMMANDO: signer WORKSPACE: /home/circleci/project

 

  1.     Plasser arbeidskatalogen for jobben på Circle-CI
 arbeidskatalog: /home/circleci/project

 

  1. Artefaktnavn for signering
  • 'Artifact-name'-verdien er et alternativ for flere prosjekter. 'Artifact-name'-parameteren ble lagt til slik at den samme signeringsdelen kan brukes for alle prosjekttyper. Siden eksemplet i skjermbildet er basert på et enkelt prosjekt, var det ikke nødvendig å inkludere det.
    parametere: artefaktnavn: type: streng standard: ''

 

  1. Definer en docker-utøver:

 For ytterligere referanse, se: https://circleci.com/docs/2.0/executor-types/

       Du kan spesifisere et bilde fra Dockerhub eller bruke et av våre bekvemmelighetsbilder fra CircleCIs utviklerhub.

       Sørg for å oppdatere Docker-bildekoden nedenfor til openjdk-versjonen av applikasjonen din.

       En liste over tilgjengelige CircleCI Docker Convenience-bilder er tilgjengelig her: https://circleci.com/developer/images/image/cimg/openjdk

   docker: - bilde: cimg/openjdk:17.0.3

 

  1. Legg til trinn i jobben

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

    trinn:

 

  1. Opprett artefaktkatalog for å lagre signerte og usignerte artefaktfiler
  - run: name: Create Artifacts Directory-kommando: | mkdir -p ${WORKSPACE}/artefakter mkdir -p ${WORKSPACE}/pakker

 

  1. Legg ved Workspace for å få tilgang til artefaktfilen
   - attach_workspace: på: /home/circleci/project

 

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

 

  1. Trekk Codesigner Docker Image fra Github Registry
        - run: name: Docker Pull Image kommando: | docker pull ghcr.io/sslcom/codesigner:siste docker pull alpine:3.4

 

  1. Skriv trinnet der artefakten skal signeres med CodeSignTool.
 - run: name: 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}/packages /<< parameters.artifact-name >> codesign-in:/codesign/packages docker run -i --rm --dns 8.8.8.8 --nettverksvert --volumes-from codesign-in --volumes-from 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: ${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. Skriv trinnet for at artefakten skal lastes opp fra arbeidsflyten din, slik at du kan dele data mellom jobber og lagre data når en arbeidsflyt er fullført
    - store_artifacts: navn: Last opp signerte filer bane: /home/circleci/project/artifacts/<< parameters.artifact-name >> destinasjon: << parameters.artifact-name >>
 

Opprett et nytt depot på kommandolinjen

Kopier push-kommandokomponentene fra plasseringen til prosjektet ditt på GitHub-kontoen din

Inkluder alle push-kommandokomponenter i editoren

SSL.coms EV Kodesignering sertifikater bidrar til å beskytte koden din mot uautorisert tukling og kompromiss med det høyeste nivået av validering, og er tilgjengelige for så lite som $ 249 per år. Du kan også bruk EV Code Signing-sertifikatet i stor skala i skyen ved hjelp av eSigner.

BESTILL NÅ

Sett opp et prosjekt på CircleCI ved å bruke depotet som er integrert i GitHub

Definer alle miljøvariablene

Mens prosjektet kjører, klikk på Prosjektinnstillinger-knappen etterfulgt av Miljøvariabler for å definere variablene

Plasser verdiene for hver variabel

Klikk på Legg til miljøvariabel for å legge til navn og verdier for alle variabler som kreves for prosjektet.

Vent til prosjektet skal bygges

Klikk på Vedvarer til arbeidsområdet

Vent kort på at arbeidsområdearkivet skal lastes opp.

Klikk på tegnknappen

Vent til Remote Docker er satt opp

Det kan ta mer enn ett minutt, avhengig av størrelsen på filen

Vent til gjenstandene blir signert

Klikk Artifacts tab

Hvis du klikker Artifacts, vil du kunne se filen som du har kodesignert. Du vil også bli varslet av CircleCI om vellykket kodesignering.

Du kan referere til SSL.com Github-depotet som inneholder kildekodene til docker-bildet og beskriver hvordan du bruker det: https://github.com/SSLcom/ci-images

Eksempel på CircleCI Pipeline

Sjekk ut prøven CircleCI-pipeline vi har laget på github.com/SSLcom/codesigner-circleci-sample

Andre veiledninger for integrasjon av CI/CD-fjernsignering

Trenger du tilpassede løsninger? 

Med vår ekspertkunnskap og femstjerners støttepersonell er vi klare og villige til å samarbeide med deg om tilpassede løsninger eller store signeringsrabatter på bedriftsnivå. Fyll ut skjemaet under så tar vi kontakt.

Abonner på SSL.coms nyhetsbrev

Ikke gå glipp av nye artikler og oppdateringer fra SSL.com

Hold deg informert og sikker

SSL.com er en global leder innen cybersikkerhet, PKI og digitale sertifikater. Registrer deg for å motta de siste bransjenyhetene, tipsene og produktkunngjøringene fra SSL.com.

Vi vil gjerne ha tilbakemeldinger

Ta vår spørreundersøkelse og fortell oss dine tanker om ditt nylige kjøp.