Cloud Code Signing-integratie met GitLab CI

Dit is een zelfstudie over het automatisch ondertekenen van code op GitLab CI met behulp van eSigner CodeSignTool. 

CodeSignTool is een veilig hulpprogramma voor de opdrachtregel dat deel uitmaakt van eSigner: onze cloudomgeving voor het ondertekenen van code die software-uitgevers en -ontwikkelaars ten goede komt met zijn capaciteit om veilig en efficiënt codeondertekening van ondernemingen uit te voeren op een niet-gecompliceerde manier.  De voorbeeldworkflow hieronder toont een .NET DLL-code die wordt ondertekend op GitLab CI met eSigner.

SSL.com's EV Code ondertekening certificaten helpen uw code te beschermen tegen ongeautoriseerde manipulatie en compromittering met het hoogste validatieniveau, en zijn beschikbaar voor slechts $ 249 per jaar. Je kan ook gebruik uw EV Code Signing-certificaat op schaal in de cloud met eSigner.

BESTEL NU

Omgevingsvariabelen

  • USERNAME: gebruikersnaam van SSL.com-account. (Verplicht)
  • WACHTWOORD: SSL.com-accountwachtwoord (vereist)
  • CREDENTIAL_ID: Referentie-ID voor ondertekeningscertificaat. Als credential_id wordt weggelaten en de gebruiker slechts één eSigner-certificaat voor het ondertekenen van code heeft, zal CodeSignTool dat standaard gebruiken. Als de gebruiker meer dan één code-ondertekeningscertificaat heeft, is deze parameter verplicht. (Verplicht)
  • TOTP_GEHEIM: OAuth TOTP-geheim. U hebt toegang tot gedetailleerde informatie over: https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Verplicht)
  • OMGEVING_NAME : 'TEST' of 'PROD' omgeving. (Verplicht)

Ingangen

  • invoer_bestandspad: Pad van codeobject dat moet worden ondertekend. (Verplicht)
  • output_dir_pad: Directory waar ondertekende code-object(en) zullen worden geschreven. Als output_path wordt weggelaten, wordt het bestand gespecificeerd in -file_path overschreven door het ondertekende bestand.

.NET Code DLL-ondertekening Voorbeeld workflow

Maak een yml-bestand

Groepeer taken in fasen. Alle taken in één fase moeten worden voltooid voordat de volgende fase wordt uitgevoerd.

fasen: - bouwen - ondertekenen
 

Definieer omgevingsvariabelen globaal. De eigenschap op taakniveau overschrijft globale variabelen.

  • Omgevingsvariabelen worden gebruikt om de voorbeelden leesbaarder te maken. In de bovenstaande schermafbeelding van de voorbeeldworkflow zijn de PROJECT_NAME, PROJECT_VERSION en DOTNET_VERSION optioneel weggelaten. Ondertekening kan nog steeds doorgaan met deze omissies.  
  • Plaats onder ENVIRONMENT_NAME "TEST" voor testondertekening en "PROD" voor liveondertekening.
variabelen: PROJECT_NAME: "HelloWorld" PROJECT_VERSION: "0.0.1" DOTNET_VERSION: "3.1" ENVIRONMENT_NAME: "PROD"
 

Definieer de Bouwfase

Hieronder vindt u de definitie van uw taak om dll-artefacten te bouwen

build-dotnet:

 

  1. Bepaal in welke fase de taak wordt uitgevoerd.
  fase: bouwen

 

  1. Plaats de volledige naam van de afbeelding die moet worden gebruikt. Het moet indien nodig het registergedeelte bevatten.
 afbeelding: mcr.microsoft.com/dotnet/sdk:3.1-bullseye

 

  1. Definieer scripts die *vóór* de taak moeten worden uitgevoerd. Kan globaal of per taak worden ingesteld.
before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/pakketten

 

  1. Definieer Shell-scripts uitgevoerd door de Runner. DLL-artefact bouwen
script: - dotnet build dotnet/${PROJECT_NAME}.csproj -c Release - cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${CI_PROJECT_DIR}/packages/${ PROJECT_NAME}.dll

 

  1. Geef een lijst op met bestanden en mappen die aan de taak moeten worden toegevoegd als deze slaagt.
  • Het 'verlopen_in' eigenschap staat toe dat het bestand na een bepaalde tijd wordt verwijderd. Het gebruik ervan is optioneel. Dit is de reden waarom de schermafbeelding van de voorbeeldworkflow hierboven deze eigenschap niet toont.
artefacten: paden: - ${CI_PROJECT_DIR}/packages/HelloWorld.dll expire_in: 5 minuten
 

Definieer de tekenfase

Hieronder vindt u de definitie van uw taak om dll-artefacten te ondertekenen

teken-dotnet-artefacten:

 

  1. Bepaal in welke fase de taak wordt uitgevoerd.
  stadium: teken

 

  1. Plaats de volledige naam van de afbeelding die moet worden gebruikt. Het moet indien nodig het registergedeelte bevatten.
 afbeelding: havenarbeider: 19.03.0

 

  1. Definieer diensten. Dit is vergelijkbaar met de eigenschap `image`, maar koppelt de gespecificeerde services aan de `image`-container.
diensten: - havenarbeider: 19.03.0-dind

 

  1. Definieer omgevingsvariabelen voor specifieke taken.
  • In de bovenstaande schermafbeelding is de sign-opdracht rechtstreeks in het sign-script gedefinieerd en niet onder omgevingsvariabelen. Bandere methoden kunnen correct ondertekenen met TravisCI.
  variabelen: COMMANDO: "teken"

 

  1. Definieer scripts die *vóór* de taak moeten worden uitgevoerd. Kan globaal of per taak worden ingesteld.
  before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/pakketten

 

  1. Plaats Shell-scripts uitgevoerd door de Runner. Onderteken .NET dll-artefact met CodeSignTool Docker Image
script: - docker pull ghcr.io/sslcom/codesigner:latest - docker run -i --rm --dns 8.8.8.8 --network host --volume ${CI_PROJECT_DIR}/packages:/codesign/examples --volume $ {CI_PROJECT_DIR}/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:laatste ${COMMAND} -input_file_path=/codesign/examples/${PROJECT_NAME}.dll -output_dir_path=/codesign/output

 

  1. Schrijf het script dat kan worden gebruikt om een ​​lijst met bestanden en mappen op te geven die aan de taak moeten worden toegevoegd als deze slaagt.
artefacten: paden: - ${CI_PROJECT_DIR}/artifacts/${PROJECT_NAME}.dll expire_in: 1 dagen

 

  1. Geef een lijst op met taaknamen uit eerdere stadia waaruit artefacten moeten worden geladen.
afhankelijkheden: - build-dotnet

SSL.com's EV Code ondertekening certificaten helpen uw code te beschermen tegen ongeautoriseerde manipulatie en compromittering met het hoogste validatieniveau, en zijn beschikbaar voor slechts $ 249 per jaar. Je kan ook gebruik uw EV Code Signing-certificaat op schaal in de cloud met eSigner.

BESTEL NU

Start de bouwfase

Een opslagplaats maken

Raadpleeg de opdrachtregelinstructies op Gitlab zoals te zien is in de onderstaande schermafbeelding:

Duw je map

Doe dit door te klikken op terminal op het menu, gevolgd door Nieuwe terminal.

Typ het push-script op uw Terminal om het project te pushen 

Klik op de knop Bouwen

Ga na het activeren van de pijplijn verder met bouwen

Controleer of de build is gelukt  

Start de tekenfase

Ga verder om het artefact te ondertekenen

Bevestig of de code-ondertekening succesvol is

U kunt nu het ondertekende bestand downloaden

U kunt verwijzen naar de SSL.com Github-repository die de broncodes van de docker-afbeelding bevat en beschrijft hoe deze te gebruiken: https://github.com/SSLcom/ci-images 

Voorbeeld Gitlab CI-pijplijn

Bekijk de voorbeeld Gitlab CI-pijplijn waarop we hebben gemaakt github.com/SSLcom/codesigner-gitlabci-sample

Andere integratiehandleidingen voor CI/CD Remote Signing

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.

Abonneer u op de nieuwsbrief van SSL.com

Mis geen nieuwe artikelen en updates van SSL.com

Blijf geïnformeerd en veilig

SSL.com is een wereldleider op het gebied van cyberbeveiliging, PKI en digitale certificaten. Meld u aan om het laatste branchenieuws, tips en productaankondigingen te ontvangen van SSL.com.

We willen graag uw feedback

Vul onze enquête in en laat ons uw mening over uw recente aankoop weten.