SSL.com

Integrazione della firma del codice cloud con Jenkins CI

Questa è una guida su come eseguire la firma automatica del codice su Jenkins con l'uso di eSigner CodeSignTool. CodeSignTool è un'utilità della riga di comando adatta per firme ad alto volume e si integra perfettamente con varie piattaforme CI/CD. Fa parte di eSigner: il nostro servizio di firma remota che offre un approccio efficiente, sicuro e intuitivo alla firma del codice aziendale.

SSL.com's EV Firma del codice Certificati aiutano a proteggere il tuo codice da manomissioni e compromissioni non autorizzate con il più alto livello di convalida e sono disponibili a un prezzo minimo $ 249 all'anno.

ACQUISTA IL TUO CERTIFICATO DI FIRMA DEL CODICE EV SSL.COM

Crea un file Jenkins e definisci la pipeline nel tuo editor di codice

pipeline { agent any options { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }

Imposta lo strumento .NET sul tuo editor di codice configurando Jenkins

Clicca su Gestisci Jenkins scheda sulla dashboard di Jenkins.

Scorri la pagina verso il basso e fai clic su Configurazione globale dello strumento.

Scorri verso il basso e fai clic Installazioni di .NET SDK.

Copia il valore per .NET SDK e incollalo nell'editor di codice.

strumenti {dotnetsdk "DOTNET_CORE_3.1.24" }

Vai su plugins.jenkins.io e installa il plugin .NET SDK

Sotto Gestisci Jenkins sulla tua dashboard, controlla Gestisci plugin per confermare se il plug-in .NET SDK è stato installato.

Dopo aver verificato che il plug-in è stato installato, torna a INSTALLAZIONI DI .NET SDK e assicurati che la versione corretta e i dettagli sulla versione del plug-in .NET SDK siano impostati. Procedi a fare clic su Risparmi pulsante.

Imposta le variabili d'ambiente sul tuo editor di codice

ambiente {NOMEUTENTE = credenziali('es-username') // nome utente dell'account SSL.com. PASSWORD = credenziali('es-password') // Password dell'account SSL.com. CREDENTIAL_ID = credenziali('es-crendential-id') // ID credenziali per la firma del certificato. TOTP_SECRET = credenziali('es-totp-secret') // Segreto TOTP OAuth (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Nome dell'ambiente. Per conto demo può essere 'TEST' altrimenti sarà 'PROD' }

Troverai i valori per ciascuna variabile nella dashboard Jenkins sotto Sicurezza> gestire Credenziali.

 

Imposta le fasi per la creazione della directory degli artefatti, il pull dell'immagine Docker, la creazione di .NET e la firma del codice dell'artefatto

 

        1) Crea una directory degli artefatti per archiviare i file degli artefatti firmati e non firmati.
 stage('Crea directory artifacts') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }
        2) Estrai l'immagine Docker di Codesigner dal registro di Github.
stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }
        3) Crea un progetto o una soluzione dotnet e tutte le sue dipendenze. Dopo aver creato il file dll o exe, copialo nella cartella "pacchetti" per la firma.
stage('Build Dotnet') { steps { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/ HelloWorld.dll' } }
        4) Questo è il passaggio in cui i file DLL (artifact) creati verranno firmati con CodeSignTool.
stage('Sign and Save Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- volume ${WORKSPACE}/artifacts:/codesign/output -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 sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { sempre { archiveArtifacts artefatti: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }

SSL.com's EV Firma del codice Certificati aiutano a proteggere il tuo codice da manomissioni e compromissioni non autorizzate con il più alto livello di convalida e sono disponibili a un prezzo minimo $ 249 all'anno.

ACQUISTA IL TUO CERTIFICATO DI FIRMA DEL CODICE EV SSL.COM

Crea un repository Github

Copia ciascuno dei componenti del comando push su Github.

Scrivi i comandi su un nuovo terminale sul tuo editor di codice per eseguire il push del codice.

Dopo aver inserito il codice, vai al tuo account Github e copia il link URL del tuo progetto.

Procedi al tuo account Jenkins e fai clic su Crea un lavoro collegamento.

Scegli Pipeline multiramo, imposta il nome per il tuo progetto e fai clic su OK pulsante.

Sotto Fonti di filiale, selezionare Idiota e incolla il link URL del tuo progetto Github.

Scorri fino a Scansione dei trigger di pipeline multiramo. Seleziona la casella per Periodicamente, se non altrimenti eseguito. Puoi selezionare 2 minuti.

Clicca su Risparmi pulsante.

Torna al tuo account Jenkins, fai clic sul tuo progetto e conferma se la pipeline è iniziata

Fai clic sul tuo progetto Jenkins e seleziona Scansiona ora la pipeline multiramo sul dashboard.

Clicchi Uscita console

Scorri verso il basso e controlla se la firma del codice ha esito positivo

Intero script

Nota: assicurati di correggere gli errori tipografici o le interruzioni di riga errate nello script in modo che il processo di firma si svolga senza intoppi.

Definisci la pipeline

pipeline { agent any options { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }

Installa strumenti di compilazione

strumenti {dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }

Crea una variabile di ambiente

ambiente {NOMEUTENTE = credenziali('es-username') // nome utente dell'account SSL.com. PASSWORD = credenziali('es-password') // Password dell'account SSL.com. CREDENTIAL_ID = credenziali('es-crendential-id') // ID credenziali per la firma del certificato. TOTP_SECRET = credenziali('es-totp-secret') // Segreto TOTP OAuth (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Nome dell'ambiente. Per conto demo può essere 'TEST' altrimenti sarà 'PROD' }

Script per le fasi di costruzione e firma

stages { // 1) Crea una directory degli artefatti per archiviare i file degli artefatti firmati e non firmati stage('Crea directory degli artefatti') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Pull Codesigner Docker Image From Github Registry stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) Crea un progetto o una soluzione dotnet e tutto le sue dipendenze. // Dopo che è stato creato il file dll o exe, copia nella cartella 'packages' per la firma stage('Build Dotnet') { steps { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/ Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/HelloWorld.dll' } } // 4) Questo è il passaggio in cui i file DLL (artifact) creati verranno firmati con CodeSignTool. stage('Sign and Save Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- volume ${WORKSPACE}/artifacts:/codesign/output -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 sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { sempre { archiveArtifacts artefatti: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
È possibile fare riferimento a SSL.com Repository Github che contiene i codici sorgente dell'immagine docker e descrive come usarlo: https://github.com/SSLcom/ci-images 

Esempio di pipeline Jenkins

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

Altre guide all'integrazione della firma remota

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.

Esci dalla versione mobile