Cloud Code Signing-integration med Jenkins CI

Dette er en guide til, hvordan man laver automatisk kodesignering på Jenkins med brug af eSigner CodeSignTool.

CodeSignTool er et kommandolinjeværktøj, der er velegnet til signeringer med høj volumen og problemfrit integreret med forskellige CI/CD-platforme. Det er en del af eSigner: vores fjernsigneringstjeneste, der tilbyder en effektiv, sikker og brugervenlig tilgang til virksomhedskodesignering.

SSL.com s EV Kodesignering Certifikater hjælpe med at beskytte din kode mod uautoriseret manipulation og gå på kompromis med det højeste niveau af validering, og er tilgængelig for så lidt som $ 249 pr.

KØB DIT SSL.COM EV CODE SIGNERINGSCERTIFIKAT

Opret en Jenkins-fil og definer pipelinen på din kodeeditor

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

Indstil .NET-værktøjet på din kodeeditor ved at konfigurere Jenkins

Klik på knappen Administrer Jenkins fanen på dit Jenkins-dashboard.

Rul ned på siden, og klik på Global Tool Configuration.

Rul ned og klik .NET SDK-installationer.

Kopiér værdien for .NET SDK og indsæt den i din kodeeditor.

værktøjer { dotnetsdk "DOTNET_CORE_3.1.24" }

Gå til plugins.jenkins.io og installer .NET SDK-pluginnet

Under Administrer Jenkins på dit Dashboard, tjek Administrer plugins for at bekræfte, om .NET SDK-plugin'et er blevet installeret.

Når du har bekræftet, at plugin'et er blevet installeret, skal du gå tilbage til .NET SDK-INSTALLATIONER og sørge for, at den korrekte version og udgivelsesdetaljer for .NET SDK-pluginnet er indstillet. Fortsæt med at klikke på Gem .

Indstil miljøvariablerne på din kodeeditor

miljø { BRUGERNAVN = legitimationsoplysninger('es-brugernavn') // SSL.com-kontobrugernavn. PASSWORD = credentials('es-password') // SSL.com kontoadgangskode. CREDENTIAL_ID = credentials('es-crendential-id') // Credential ID for signering af certifikat. TOTP_SECRET = legitimationsoplysninger('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Miljønavn. For demokonto kan det være 'TEST' ellers bliver det 'PROD' }

Du finder værdierne for hver variabel på dit Jenkins-dashboard under Sikkerhed> Administrer Legitimationsoplysninger.

 

Indstil stadierne for oprettelse af artefaktbibliotek, træk af docker-billede, opbygning af .NET og kodesignering af artefakten

 

        1) Opret artefaktkatalog til butikssignerede og usignerede artefaktfiler.
 stage('Create artifacts directory') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/pakker' } }
        2) Træk Codesigner Docker-billede fra Github Registry.
stage('Docker Pull Image') { steps {sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }
        3) Byg et dotnet-projekt eller -løsning og alle dets afhængigheder. Efter at dll- eller exe-filen er blevet oprettet, skal du kopiere til mappen 'pakker' for at signere.
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) Dette er det trin, hvor de oprettede DLL-filer (artefakt) vil blive signeret med CodeSignTool.
stage('Sign og gem Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --netværksvært --volumen ${WORKSPACE}/pakker:/codesign/eksempler -- bind ${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:nyeste tegn -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { altid { archiveArtifacts artifacts: "artifacts/HelloWorld.dll", } } } } }

SSL.com s EV Kodesignering Certifikater hjælpe med at beskytte din kode mod uautoriseret manipulation og gå på kompromis med det højeste niveau af validering, og er tilgængelig for så lidt som $ 249 pr.

KØB DIT SSL.COM EV CODE SIGNERINGSCERTIFIKAT

Opret en Github-repo

Kopier hver af push-kommandokomponenterne på Github.

Skriv kommandoerne på en ny terminal på din kodeeditor for at skubbe koden.

Når du har trykket koden, skal du gå til din Github-konto og kopiere URL-linket til dit projekt.

Fortsæt til din Jenkins-konto, og klik på Skab et job .

Vælg Flergrenet rørledning, indstil navnet på dit projekt, og klik på OK .

Under Filialkilder, Vælg Git og indsæt URL-linket til dit Github-projekt.

Rul ned til Scan Multibranch Pipeline Triggere. Sæt kryds i boksen for Periodisk hvis ikke andet køres. Du kan vælge 2 minutter.

Klik på knappen Gem .

Gå tilbage til din Jenkins-konto, klik på dit projekt, og bekræft, om pipelinen er startet

Klik på dit Jenkins-projekt og vælg Scan multibranch pipeline nu på instrumentbrættet.

Klik Konsol output

Rul ned og kontroller, om kodesignering er vellykket

Hele scriptet

Bemærk: Sørg for at rette typografiske fejl eller fejlagtige linjeskift i scriptet, så underskriftsprocessen kører problemfrit.

Definer rørledningen

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

Installer byggeværktøjer

værktøjer { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }

Opret en miljøvariabel

miljø { BRUGERNAVN = legitimationsoplysninger('es-brugernavn') // SSL.com-kontobrugernavn. PASSWORD = credentials('es-password') // SSL.com kontoadgangskode. CREDENTIAL_ID = credentials('es-crendential-id') // Credential ID for signering af certifikat. TOTP_SECRET = legitimationsoplysninger('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Miljønavn. For demokonto kan det være 'TEST' ellers bliver det 'PROD' }

Script til bygge- og skiltestadierne

stadier {// 1) Opret artefaktkatalog til butikssignerede og usignerede artefaktfiler stage('Opret artefaktmappe') { trin { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/pakker' } } / / 2) Træk Codesigner Docker-billede fra Github Registry-stadiet ('Docker Pull Image') { trin { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) Byg et dotnet-projekt eller -løsning og alle dens afhængigheder. // Efter at den er blevet oprettet dll- eller exe-fil, kopieres til 'packages'-mappen for at signere fase('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) Dette er det trin, hvor de oprettede DLL-filer (artefakt) vil blive signeret med 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 -- bind ${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:nyeste tegn -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { altid { archiveArtifacts artifacts: "artifacts/HelloWorld.dll", } } } } }
Du kan henvise til SSL.com Github repository, som indeholder kildekoderne til docker-billedet og beskriver, hvordan man bruger det: https://github.com/SSLcom/ci-images 

Prøve Jenkins Pipeline

Tjek prøven Jenkins pipeline, vi har lavet på github.com/SSLcom/codesigner-jenkins-sample

Andre 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.

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.