Intégration de la signature de code dans le cloud avec Jenkins CI

Il s'agit d'un guide sur la façon de procéder à une signature de code automatisée sur Jenkins avec l'utilisation d'eSigner CodeSignTool.

CodeSignTool est un utilitaire de ligne de commande qui convient aux signatures à volume élevé et s'intègre de manière transparente à diverses plates-formes CI/CD. Il fait partie d'eSigner : notre service de signature à distance qui offre une approche efficace, sécurisée et conviviale de la signature de code d'entreprise.

SSL.com EV Signature du code Certificats aident à protéger votre code contre les altérations non autorisées et les compromis avec le plus haut niveau de validation, et sont disponibles pour aussi peu que 249 $ par année.

ACHETEZ VOTRE CERTIFICAT DE SIGNATURE DE CODE SSL.COM EV

Créez un fichier Jenkins et définissez le pipeline sur votre éditeur de code

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

Paramétrez l'outil .NET sur votre éditeur de code en configurant Jenkins

Cliquez  Gérer Jenkins onglet sur votre tableau de bord Jenkins.

Faites défiler la page et cliquez sur Configuration globale de l'outil.

Faites défiler vers le bas et cliquez Installations du SDK .NET.

Copiez la valeur pour .NET SDK et collez-la dans votre éditeur de code.

outils { dotnetsdk "DOTNET_CORE_3.1.24" }

Allez sur plugins.jenkins.io et installez le plugin .NET SDK

Sous Gérer Jenkins sur votre tableau de bord, cochez Gérer les plugins pour confirmer si le plug-in .NET SDK a été installé.

Après avoir confirmé que le plug-in a été installé, revenez à .NET SDK INSTALLATIONS et assurez-vous que la version correcte et les détails de version du plug-in .NET SDK sont définis. Continuez à cliquer sur le Épargnez .

Définissez les variables d'environnement sur votre éditeur de code

environnement { USERNAME = identifiants ('es-username') // nom d'utilisateur du compte SSL.com. PASSWORD = identifiants('es-password') // Mot de passe du compte SSL.com. CREDENTIAL_ID =credentials('es-crendential-id') // ID d'identification pour la signature du certificat. TOTP_SECRET = identifiants('es-totp-secret') // Secret TOTP OAuth (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Nom de l'environnement. Pour le compte démo, cela peut être 'TEST' sinon ce sera 'PROD' }

Vous trouverez les valeurs de chaque variable sur votre tableau de bord Jenkins sous Sécurité> Gérer Expérience.

 

Définissez les étapes de création du répertoire des artefacts, de l'extraction de l'image Docker, de la création de .NET et de la signature du code de l'artefact

 

        1) Créez un répertoire d'artefacts pour stocker les fichiers d'artefacts signés et non signés.
 stage('Créer le répertoire des artefacts') { étapes { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }
        2) Extrayez l'image Docker Codesigner du registre Github.
stage('Docker Pull Image') { étapes { sh 'docker pull ghcr.io/sslcom/codedesigner:latest' } }
        3) Créez un projet ou une solution dotnet et toutes ses dépendances. Une fois le fichier dll ou exe créé, copiez-le dans le dossier "packages" pour signature.
stage('Build Dotnet') { étapes { 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) C'est l'étape où les fichiers DLL (artefacts) créés seront signés avec 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/codedesigner:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts artefacts : "artifacts/HelloWorld.dll", onlyIfSuccessful : vrai } } } } }

SSL.com EV Signature du code Certificats aident à protéger votre code contre les altérations non autorisées et les compromis avec le plus haut niveau de validation, et sont disponibles pour aussi peu que 249 $ par année.

ACHETEZ VOTRE CERTIFICAT DE SIGNATURE DE CODE SSL.COM EV

Créer un dépôt Github

Copiez chacun des composants de la commande push sur Github.

Écrivez les commandes dans un nouveau terminal sur votre éditeur de code pour pousser le code.

Après avoir poussé le code, accédez à votre compte Github et copiez le lien URL de votre projet.

Accédez à votre compte Jenkins et cliquez sur le Créer un emploi lien.

Selectionnez Pipeline multibranche, définissez le nom de votre projet, puis cliquez sur le OK .

Sous Sources des succursales, sélectionnez Git et collez le lien URL de votre projet Github.

Faites défiler jusqu'à Analyser les déclencheurs de pipeline multibranche. Cochez la case pour Périodiquement sinon exécuter autrement. Vous pouvez sélectionner 2 minutes.

Cliquez  Épargnez .

Retournez sur votre compte Jenkins, cliquez sur votre projet et confirmez si le pipeline a démarré

Cliquez sur votre projet Jenkins et sélectionnez Analysez maintenant le pipeline multibranche sur le tableau de bord.

Cliquez Sortie de la console

Faites défiler vers le bas et vérifiez si la signature du code a réussi

Script entier

Remarque : Assurez-vous de corriger les erreurs typographiques ou les sauts de ligne erronés dans le script afin que le processus de signature se déroule sans heurts.

Définir le pipeline

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

Installer les outils de compilation

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

Créer une variable d'environnement

environnement { NOM D'UTILISATEUR = identifiants ('es-nom d'utilisateur') // nom d'utilisateur du compte SSL.com. PASSWORD = identifiants('es-password') // Mot de passe du compte SSL.com. CREDENTIAL_ID =credentials('es-crendential-id') // ID d'identification pour la signature du certificat. TOTP_SECRET = identifiants('es-totp-secret') // Secret TOTP OAuth (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL Nom de l'environnement .com. Pour le compte démo, cela peut être 'TEST' sinon ce sera 'PROD' }

Script pour les étapes de construction et de signature

stages { // 1) Créer un répertoire d'artefacts pour stocker les fichiers d'artefacts signés et non signés stage('Créer un répertoire d'artefacts') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Extraire l'image Docker Codesigner du registre Github stage ('Docker Pull Image') { étapes { sh 'docker pull ghcr.io/sslcom/codedesigner:latest' } } // 3) Construire un projet ou une solution dotnet et tout ses dépendances. // Une fois le fichier dll ou exe créé, copiez-le dans le dossier 'packages' pour la signature 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) Il s'agit de l'étape où les fichiers DLL (artefacts) créés seront signés avec 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/codedesigner:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts artefacts : "artifacts/HelloWorld.dll", onlyIfSuccessful : vrai } } } } }
Vous pouvez vous référer à SSL.com Référentiel Github qui contient les codes sources de l'image docker et décrit comment l'utiliser : https://github.com/SSLcom/ci-images 

Exemple de pipeline Jenkins

Découvrez l'exemple de pipeline Jenkins que nous avons créé sur github.com/SSLcom/codedesigner-jenkins-sample

Autres guides d'intégration de la signature à distance

Besoin de solutions personnalisées ? 

Grâce à nos connaissances spécialisées et à notre personnel d'assistance cinq étoiles, nous sommes prêts et disposés à travailler avec vous sur des solutions personnalisées ou des remises de signature de gros volumes au niveau de l'entreprise. Remplissez le formulaire ci-dessous et nous vous contacterons.

Abonnez-vous à la newsletter de SSL.com

Ne manquez pas les nouveaux articles et mises à jour de SSL.com

Restez informé et en sécurité

SSL.com est un leader mondial de la cybersécurité, PKI et les certificats numériques. Inscrivez-vous pour recevoir les dernières nouvelles de l'industrie, des conseils et des annonces de produits de SSL.com.

Nous aimerions recevoir vos commentaires

Répondez à notre enquête et faites-nous part de votre avis sur votre récent achat.