Cloud Code Signing-integrasjon med Jenkins CI

Dette er en veiledning for hvordan du gjør automatisert kodesignering på Jenkins med bruk av eSigner CodeSignTool.

CodeSignTool er et kommandolinjeverktøy som er egnet for signeringer med høyt volum og sømløst integreres med ulike CI/CD-plattformer. Den er en del av eSigner: vår fjernsigneringstjeneste som tilbyr en effektiv, sikker og brukervennlig tilnærming til signering av bedriftskode.

SSL.coms EV Kodesignering sertifikater bidra til å beskytte koden din mot uautorisert tukling og kompromiss med det høyeste nivået av validering, og er tilgjengelig for så lite som $ 249 per år.

KJØP DITT SSL.COM EV CODE SIGNERINGSSERTIFIKAT

Opprett en Jenkins-fil og definer rørledningen på koderedigeringsprogrammet

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

Sett .NET-verktøyet på koderedigeringsprogrammet ditt ved å konfigurere Jenkins

Klikk på Administrer Jenkins fanen på Jenkins-dashbordet.

Rull ned på siden og klikk på Global Tool Configuration.

Rull ned og klikk .NET SDK-installasjoner.

Kopier verdien for .NET SDK og lim den inn i koderedigeringsprogrammet.

verktøy { dotnetsdk "DOTNET_CORE_3.1.24" }

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

Under Administrer Jenkins på dashbordet, sjekk Administrer programtillegg for å bekrefte om .NET SDK-plugin-modulen er installert.

Etter å ha bekreftet at plugin-en er installert, går du tilbake til .NET SDK-INSTALLASJONER og kontrollerer at den riktige versjonen og utgivelsesdetaljene for .NET SDK-pluginen er angitt. Fortsett til å klikke på Spar knapp.

Still inn miljøvariablene på koderedigeringsprogrammet

miljø { BRUKERNAVN = credentials('es-username') // SSL.com-kontobrukernavn. PASSWORD = credentials('es-password') // SSL.com-kontopassord. CREDENTIAL_ID = legitimasjon('es-crendential-id') // Legitimasjons-ID for signering av sertifikat. TOTP_SECRET = credentials('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 blir det "PROD" }

Du finner verdiene for hver variabel på Jenkins-dashbordet under Sikkerhet> Administrer Legitimasjon.

 

Angi stadier for å lage artefaktkatalog, trekke docker-bilde, bygge .NET og kodesignering av artefakten

 

        1) Opprett artefaktkatalog for lagre signerte og usignerte artefaktfiler.
 stage('Create artifacts directory') { trinn { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/pakker' } }
        2) Trekk Codesigner Docker Image fra Github Registry.
stage('Docker Pull Image') { trinn { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }
        3) Bygg et dotnet-prosjekt eller -løsning og alle dets avhengigheter. Etter at dll- eller exe-filen er opprettet, kopierer du til 'pakker'-mappen for signering.
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 trinnet der de opprettede DLL-filene (artefakt) blir signert med CodeSignTool.
stage('Sign and Save Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --nettverksvert --volume ${WORKSPACE}/packages:/codesign/examples -- volum ${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 { alltid { archiveArtifacts artifacts: "artifacts/HelloIlfSuccessful only: trueIfact.dll", } } } } }

SSL.coms EV Kodesignering sertifikater bidra til å beskytte koden din mot uautorisert tukling og kompromiss med det høyeste nivået av validering, og er tilgjengelig for så lite som $ 249 per år.

KJØP DITT SSL.COM EV CODE SIGNERINGSSERTIFIKAT

Opprett en Github-repo

Kopier hver av push-kommandokomponentene på Github.

Skriv kommandoene på en ny terminal på kodeeditoren for å trykke koden.

Etter å ha presset koden, gå til Github-kontoen din og kopier URL-lenken til prosjektet ditt.

Fortsett til Jenkins-kontoen din og klikk på Skap en jobb kobling.

Velg Flergrenet rørledning, angi navnet på prosjektet ditt, og klikk på OK knapp.

Under Filialkilder, plukke ut  og lim inn URL-koblingen til Github-prosjektet ditt.

Rull ned til Skann multibranch pipeline triggere. Merk av for Periodisk hvis ikke annet kjøres. Du kan velge 2 minutter.

Klikk på Spar knapp.

Gå tilbake til Jenkins-kontoen din, klikk på prosjektet ditt og bekreft om pipelinen har startet

Klikk på Jenkins-prosjektet ditt og velg Skann multibranch pipeline nå på dashbordet.

Klikk Konsollutgang

Rull ned og sjekk om kodesignering er vellykket

Hele manuset

Merk: Sørg for å korrigere typografiske feil eller feilaktige linjeskift i skriptet slik at signeringsprosessen går jevnt.

Definer rørledningen

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

Installer byggeverktøy

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

Lag en miljøvariabel

miljø { BRUKERNAVN = credentials('es-username') // SSL.com-kontobrukernavn. PASSWORD = credentials('es-password') // SSL.com-kontopassord. CREDENTIAL_ID = legitimasjon('es-crendential-id') // Legitimasjons-ID for signering av sertifikat. TOTP_SECRET = credentials('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 blir det "PROD" }

Skript for bygge- og skiltstadiene

stadier {// 1) Opprett Artifact Directory for store signerte og usignerte artefaktfiler stage('Create artifacts directory') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Trekk Codesigner Docker-bilde fra Github-registerstadiet ('Docker Pull Image') { trinn { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) Bygg et dotnet-prosjekt eller -løsning og alt dens avhengigheter. // Etter at den har blitt opprettet dll- eller exe-fil, kopierer du til 'packages'-mappen for signering ('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 trinnet der de opprettede DLL-filene (artefakt) blir signert med CodeSignTool. stage('Sign and Save Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --nettverksvert --volume ${WORKSPACE}/packages:/codesign/examples -- volum ${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 { alltid { archiveArtifacts artifacts: "artifacts/HelloIlfSuccessful only: trueIfact.dll", } } } } }
Du kan referere til SSL.com Github-depot som inneholder kildekodene til docker-bildet og beskriver hvordan du bruker det: https://github.com/SSLcom/ci-images 

Prøve Jenkins Pipeline

Sjekk ut prøven Jenkins-rørledningen vi har laget på github.com/SSLcom/codesigner-jenkins-sample

Andre veiledninger for fjernsigneringsintegrering

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.