Dit is een handleiding voor het automatisch ondertekenen van code op Jenkins met behulp van eSigner CodeSignTool. CodeSignTool is een opdrachtregelprogramma dat geschikt is voor signeersessies met grote volumes en naadloos integreert met verschillende CI/CD-platforms. Het maakt deel uit van eSigner: onze service voor ondertekening op afstand die een efficiënte, veilige en gebruiksvriendelijke benadering biedt voor het ondertekenen van bedrijfscodes.
Maak een Jenkins-bestand en definieer de pijplijn in uw code-editor

pijplijn {agent alle opties {buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds()}
Stel de .NET-tool in op uw code-editor door Jenkins . te configureren
Klik op de Beheer Jenkins tabblad op uw Jenkins-dashboard.

Scroll naar beneden op de pagina en klik op Global Tool Configuration.

Scroll naar beneden en klik .NET SDK-installaties.

Kopieer de waarde voor .NET SDK en plak deze in uw code-editor.


tools { dotnetsdk "DOTNET_CORE_3.1.24" }
Ga naar plugins.jenkins.io en installeer de .NET SDK-plug-in

Onder Beheer Jenkins op je Dashboard, check Beheer plug-ins om te bevestigen of de .NET SDK-plug-in is geïnstalleerd.


Nadat u hebt bevestigd dat de plug-in is geïnstalleerd, gaat u terug naar .NET SDK-INSTALLATIES en zorgt u ervoor dat de juiste versie en releasedetails van de .NET SDK-plug-in zijn ingesteld. Ga verder om op de . te klikken Opslaan knop.

Stel de omgevingsvariabelen in op uw code-editor

omgeving { GEBRUIKERSNAAM = referenties('es-gebruikersnaam') // Gebruikersnaam van het SSL.com-account. WACHTWOORD = referenties('es-wachtwoord') // Wachtwoord van het SSL.com-account. CREDENTIAL_ID = referenties('es-credential-id') // Referentie-ID voor het ondertekenen van het certificaat. TOTP_SECRET = referenties('es-totp-secret') // OAuth TOTP-geheim (https://ssl.com/how-to/automate-esigner-ev-code-signing) OMGEVINGSNAAM = 'PROD' // Naam van de SSL.com-omgeving. Voor een demo-account kan dit 'TEST' zijn, anders is het 'PROD' }
U vindt de waarden voor elke variabele op uw Jenkins-dashboard onder: Beveiliging> Beheren Geloofsbrieven.



Stel de fasen in voor het maken van de artefactenmap, het ophalen van de docker-afbeelding, het bouwen van .NET en het ondertekenen van code voor het artefact

1) Maak een Artifact Directory voor het opslaan van ondertekende en niet-ondertekende artefactbestanden.
stage('Maak artefactenmap') { stappen { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages'} }
2) Haal de Codesigner Docker-afbeelding uit het Github-register.
stage('Docker Pull Image') { stappen { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }
3) Bouw een dotnet-project of -oplossing en al zijn afhankelijkheden. Nadat het dll- of exe-bestand is gemaakt, kopieert u naar de map 'packages' om te ondertekenen.
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) Dit is de stap waarin de gemaakte DLL-bestanden (artefact) worden ondertekend met CodeSignTool.
stage('Sign and Save Dotnet Core DLL Artifact') { stappen { 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 { altijd { archiveArtifacts artefacten: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Maak een Github-repo
Kopieer elk van de push-opdrachtcomponenten op Github.

Schrijf de opdrachten op een nieuwe terminal op uw code-editor om de code te pushen.

Nadat je de code hebt gepusht, ga je naar je Github-account en kopieer je de URL-link van je project.

Ga naar uw Jenkins-account en klik op de Maak een baan link.

Kies Multibranch-pijpleiding, stel de naam voor uw project in en klik op de OK knop.

Onder Branchebronnenselecteer Git en plak de URL-link van uw Github-project.

Blader naar beneden naar Multibranch-pijplijntriggers scannen. Vink het vakje aan voor Periodiek, indien niet anders uitgevoerd. U kunt selecteren 2 minuten.

Klik op de Opslaan knop.

Ga terug naar je Jenkins-account, klik op je project en bevestig of de pijplijn is gestart

Klik op uw Jenkins-project en selecteer Nu multibranch-pijpleiding scannen op het Dashboard.

Klik Console-uitgang

Scroll naar beneden en controleer of het ondertekenen van de code gelukt is

Gehele script
Definieer de pijplijn
pijplijn {agent alle opties {buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds()}
Bouwtools installeren
tools {dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk}
Een omgevingsvariabele maken
omgeving { GEBRUIKERSNAAM = referenties('es-gebruikersnaam') // Gebruikersnaam van het SSL.com-account. WACHTWOORD = referenties('es-wachtwoord') // Wachtwoord van het SSL.com-account. CREDENTIAL_ID = referenties('es-credential-id') // Referentie-ID voor het ondertekenen van het certificaat. TOTP_SECRET = referenties('es-totp-secret') // OAuth TOTP-geheim (https://ssl.com/how-to/automate-esigner-ev-code-signing) OMGEVINGSNAAM = 'PROD' // Naam van de SSL.com-omgeving. Voor een demo-account kan dit 'TEST' zijn, anders is het 'PROD' }
Script voor de bouw- en ondertekenfase
stages { // 1) Maak een Artifact Directory om ondertekende en niet-ondertekende artefactbestanden op te slaan / 2) Haal Codesigner Docker Image uit Github Registry stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest'}} // 3) Bouw een dotnet-project of -oplossing en alle zijn afhankelijkheden. // Nadat het dll- of exe-bestand is gemaakt, kopieert u het naar de map 'packages' voor ondertekeningsfase ('Build Dotnet') { stappen { 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) Dit is de stap waarin de gemaakte DLL-bestanden (artefacten) worden ondertekend met CodeSignTool. stage('Sign and Save Dotnet Core DLL Artifact') { stappen { 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 { altijd { archiveArtifacts artefacten: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Voorbeeld Jenkins-pijpleiding
Bekijk de voorbeeld Jenkins-pijplijn waarop we hebben gemaakt github.com/SSLcom/codesigner-jenkins-sample
Andere integratiehandleidingen voor ondertekening op afstand
- Integratie van Cloud Code Signing met CircleCI
- Integratie van Cloud Code Signing met GitHub-acties
- Cloud Code Signing-integratie met GitLab CI
- Cloud Code Signing-integratie met Travis CI
- Cloud Code Signing-integratie met Azure DevOps
- Cloud Code Signing-automatisering met CI/CD-services
Oplossingen op maat nodig?
Met onze deskundige kennis en vijfsterrenondersteuningspersoneel staan we klaar en bereid om met u samen te werken aan aangepaste oplossingen of grote ondertekeningskortingen op ondernemingsniveau. Vul het onderstaande formulier in en we nemen contact met je op.