Integrazione della firma del codice cloud con CircleCI

Questo tutorial mostra come eSigner è integrato con CircleCI per la firma automatica del codice.

eSigner è l'ambiente cloud di SSL.com per la firma del codice. Le chiavi e i certificati di firma sono ospitati in modo sicuro nel cloud da SSL.com e sono accessibili per la firma da qualsiasi dispositivo connesso a Internet, rendendo così eSigner una delle migliori piattaforme per la firma del codice aziendale. Il toolkit eSigner include CodeSignTool che è un utilità della riga di comando per Firma del codice EV certificati ed è ideale per creare processi di firma automatizzati in varie piattaforme di integrazione continua/consegna continua (CI/CD), tra cui CircleCI. 

SSL.com's EV Firma del codice i certificati aiutano a proteggere il tuo codice da manomissioni e compromissioni non autorizzate con il massimo livello di convalida e sono disponibili a partire da $ 249 all'anno. È anche possibile usa il tuo certificato EV Code Signing su larga scala nel cloud utilizzando eSigner.

ORDINA ORA

variabili ambientali

  • USERNAME: nome utente dell'account SSL.com. (Necessario)
  • PASSWORD: password dell'account SSL.com (richiesto)
  • CREDENZIALE_ID: ID credenziale per la firma del certificato. Se credential_id viene omesso e l'utente dispone di un solo certificato di firma del codice eSigner, CodeSignTool verrà impostato automaticamente su quello. Se l'utente ha più di un certificato di firma del codice, questo parametro è obbligatorio. (Necessario)
  • TOTP_SEGRETO: Segreto TOTP OAuth. È possibile accedere a informazioni dettagliate su https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Obbligatorio)
  • NOME_AMBIENTE : Ambiente 'TEST' o 'PROD'. (Necessario)

ingressi

  • percorso_file_input: Percorso dell'oggetto codice da firmare. (Necessario)
  • output_dir_percorso: Directory in cui verranno scritti gli oggetti codice firmato. Se output_path viene omesso, il file specificato in -file_path verrà sovrascritto con il file firmato.

Preparare i componenti del flusso di lavoro (firma della DLL del codice .NET)

  1. Crea una cartella .circleci

Nell'area di lavoro per la firma del codice, crea un file cartella .circleci. Sotto di esso, crea un config.yml.

  1. Imposta la versione CI
Versione: 2.1
 
  1.  Richiama lavori tramite flussi di lavoro. I flussi di lavoro orchestrano una serie di lavori da eseguire. I lavori per questa pipeline sono configurati di seguito

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

flussi di lavoro:
 
  1. Scrivi il nome del flusso di lavoro.
  rete:
 
  1. All'interno del flusso di lavoro, definisci i lavori che desideri eseguire.
 lavori: - build - sign: richiede: - build
 

Definisci la fase di costruzione

  1. Definire un lavoro da richiamare in seguito in un flusso di lavoro.

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

lavori: costruire:

 

  1. Crea una variabile di ambiente
  • Le variabili di ambiente vengono utilizzate per rendere i campioni più leggibili. Nello screenshot sopra di un flusso di lavoro di firma di esempio, PROJECT_NAME, PROJECT_VERSION e DOTNET_VERSION sono stati opzionalmente omessi. La firma può comunque procedere anche con queste omissioni.  
  ambiente: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 DOTNET_VERSION: 3.1 WORKSPACE: /home/circleci/project

 

  1.  Definisci un esecutore Docker: (https://circleci.com/docs/2.0/executor-types/)

    # Puoi specificare un'immagine da Dockerhub o utilizzare una delle nostre Immagini di convenienza dall'Hub di sviluppo di CircleCI.

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

 

  1. Posizionare la directory di lavoro per il lavoro
  directory_di_lavoro: /home/circleci/progetto

 

  1. Aggiungi passaggi al lavoro

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

  passaggi:

 

  1.  Controlla il codice sorgente in modo che il flusso di lavoro possa accedervi.
    - guardare

 

  1. Crea una directory degli artefatti per archiviare file di artefatti firmati e non firmati
    - esegui: nome: comando Crea directory degli artefatti: | mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/pacchetti

 

  1.  Crea un progetto o una soluzione dotnet e tutte le sue dipendenze.
      - run: name: Build Dotnet Project Comando: dotnet build dotnet/${PROJECT_NAME}.csproj -c Release

 

  1. Copia l'artefatto nella directory degli artefatti
  • In questo flusso di lavoro di esempio di firma scritta, sono stati creati più tipi di progetto. Questo è il motivo per cui i file di diversi tipi di progetto sono stati conservati creando delle sottocartelle. Per i progetti Dotnet è stata creata una sottocartella denominata 'dotnet'. Nello screenshot della demo sopra, non era necessario creare una sottocartella denominata "dotnet", quindi questa non era inclusa nello script.
  - eseguire: nome: Copia artefatti comando: | cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll

 

  1. Mantieni l'artefatto nella directory degli artefatti per la firma
  - persist_to_workspace: root: . percorsi: - pacchetti/*
 

Definisci la fase della firma

  1. Definisci il lavoro di firma
 cartello:

 

  1. Crea una variabile di ambiente
  • Nello screenshot sopra, il comando sign è stato definito direttamente nello script sign e non nelle variabili di ambiente. Baltri metodi possono firmare correttamente con CircleCI.
  • Le variabili di ambiente vengono utilizzate per rendere i campioni più leggibili. Nella schermata sopra del flusso di lavoro di esempio, alcune variabili facoltativamente non sono state incluse. La firma può comunque procedere anche con queste omissioni.  
    ambiente: ENVIRONMENT_NAME: PROD COMMAND: sign WORKSPACE: /home/circleci/project

 

  1.     Posizionare la directory di lavoro per il lavoro su Circle-CI
 directory_di_lavoro: /home/circleci/progetto

 

  1. Nome dell'artefatto per la firma
  • Il valore 'artifact-name' è un'opzione per più progetti Il parametro 'artifact-name' è stato aggiunto in modo che la stessa parte di firma possa essere utilizzata per tutti i tipi di progetto. Poiché l'esempio nello screenshot è basato su un singolo progetto, non è stato necessario includerlo.
    parametri: nome-artefatto: tipo: stringa predefinito: ''

 

  1. Definisci un esecutore Docker:

 Per ulteriori riferimenti, vedere: https://circleci.com/docs/2.0/executor-types/

       Puoi specificare un'immagine da Dockerhub o utilizzare una delle nostre Immagini di convenienza dall'Hub di sviluppo di CircleCI.

       Assicurati di aggiornare il tag immagine Docker di seguito alla versione openjdk della tua applicazione.

       Un elenco delle immagini disponibili CircleCI Docker è disponibile qui: https://circleci.com/developer/images/image/cimg/openjdk

   finestra mobile: - immagine: cimg/openjdk:17.0.3

 

  1. Aggiungi passaggi al lavoro

      Per ulteriori riferimenti, vedere: https://circleci.com/docs/2.0/configuration-reference/#steps

    passaggi:

 

  1. Crea una directory degli artefatti per archiviare file di artefatti firmati e non firmati
  - esegui: nome: comando Crea directory degli artefatti: | mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/pacchetti

 

  1. Allega a Workspace per accedere al file artefatto
   - attach_workspace: in: /home/circleci/project

 

  1. Abilita Docker per CodeSigner su Circle-CI
 - setup_remote_docker: nome: Configurazione versione Docker remoto: 19.03.13 docker_layer_caching: true

 

  1. Estrai l'immagine Docker di Codesigner dal registro di Github
        - esegui: nome: comando Docker Pull Image: | docker pull ghcr.io/sslcom/codesigner:ultimo docker pull alpine:3.4

 

  1. Scrivi il passaggio in cui verrà firmato l'artefatto con CodeSignTool.
 - run: name: comando Sign Artifact File: | 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. Scrivi il passaggio per il tuo artefatto da caricare dal tuo flusso di lavoro consentendoti di condividere i dati tra i lavori e archiviare i dati una volta completato un flusso di lavoro
    - store_artifacts: nome: Carica file firmati percorso: /home/circleci/project/artifacts/<< parameters.artifact-name >> destinazione: << parameters.artifact-name >>
 

Crea un nuovo repository sulla riga di comando

Copia i componenti del comando push dalla posizione del tuo progetto sul tuo account GitHub

Includi tutti i componenti dei comandi push nel tuo editor

SSL.com's EV Firma del codice i certificati aiutano a proteggere il tuo codice da manomissioni e compromissioni non autorizzate con il massimo livello di convalida e sono disponibili a partire da $ 249 all'anno. È anche possibile usa il tuo certificato EV Code Signing su larga scala nel cloud utilizzando eSigner.

ORDINA ORA

Configura un progetto su CircleCI utilizzando il repository integrato in GitHub

Definisci tutte le variabili d'ambiente

Mentre il progetto è in esecuzione, fare clic sul pulsante Impostazioni progetto seguito da Variabili d'ambiente per definire le variabili

Posiziona i valori per ciascuna variabile

Clicca su Aggiungi variabile d'ambiente pulsante per aggiungere i nomi e i valori di tutte le variabili richieste per il progetto.

Aspetta che il progetto venga costruito

Fare clic su Persistenza nell'area di lavoro

Attendere brevemente che l'archivio dell'area di lavoro venga caricato correttamente.

Fare clic sul pulsante del segno

Attendi la configurazione del Docker remoto

Potrebbe volerci più di un minuto, a seconda delle dimensioni del file

Attendi che gli artefatti vengano firmati

Clicchi Artifacts linguetta

Se fai clic su Artifacts, sarai in grado di vedere il file che hai firmato correttamente con il codice. Inoltre, CircleCI ti avviserà dell'avvenuta firma del codice.

Puoi fare riferimento al repository Github di SSL.com che contiene i codici sorgente dell'immagine docker e descrive come usarlo: https://github.com/SSLcom/ci-images

Pipeline CircleCI di esempio

Dai un'occhiata alla pipeline CircleCI di esempio che abbiamo creato github.com/SSLcom/codesigner-circleci-sample

Altre guide all'integrazione della firma remota CI/CD

Hai bisogno di soluzioni personalizzate? 

Con la nostra conoscenza esperta e il personale di supporto a cinque stelle, siamo pronti e disposti a lavorare con te su soluzioni personalizzate o sconti per firme di alto volume a livello aziendale. Compila il modulo sottostante e sarai ricontattato.

Iscriviti alla newsletter di SSL.com

Non perdere nuovi articoli e aggiornamenti da SSL.com

Rimani informato e sicuro

SSL.com è un leader globale nella sicurezza informatica, PKI e certificati digitali. Iscriviti per ricevere le ultime notizie del settore, suggerimenti e annunci di prodotti da SSL.com.

Ci piacerebbe il tuo feedback

Partecipa al nostro sondaggio e facci sapere cosa ne pensi del tuo recente acquisto.