Integrace cloudového kódového podpisu s GitLab CI

Toto je návod, jak provádět automatické podepisování kódu na GitLab CI pomocí eSigner CodeSignTool. 

CodeSignTool je zabezpečený nástroj příkazového řádku, který je součástí eSigner: našeho cloudového prostředí pro podepisování kódu, které přináší výhody vydavatelům softwaru a vývojářům díky své schopnosti bezpečně a efektivně provádět podepisování podnikového kódu nekomplikovaným způsobem.  Ukázkový pracovní postup níže ukazuje podepisování kódu .NET DLL na GitLab CI pomocí eSigner.

SSL.com EV Podepisování kódu certifikáty pomáhají chránit váš kód před neoprávněnou manipulací a kompromitací s nejvyšší úrovní ověření a jsou k dispozici za pouhých $ 249 za rok. Můžete také používejte certifikát EV Code Signing ve velkém měřítku v cloudu pomocí eSigner.

OBJEDNAT TEĎ

Proměnné prostředí

  • USERNAME: Uživatelské jméno účtu SSL.com. (Požadované)
  • HESLO: Heslo účtu SSL.com (vyžadováno)
  • CREDENTIAL_ID: ID pověření pro podpisový certifikát. Pokud je credential_id vynecháno a uživatel má pouze jeden certifikát pro podpis kódu eSigner, CodeSignTool jej použije jako výchozí. Pokud má uživatel více než jeden certifikát pro podpis kódu, je tento parametr povinný. (Požadované)
  • TOTP_SECRET: Tajné OAuth TOTP. Podrobné informace získáte na https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Povinné)
  • ENVIRONMENT_NAME : Prostředí 'TEST' nebo 'PROD'. (Požadované)

Vstupy

  • cesta k vstupnímu_souboru: Cesta objektu kódu, který má být podepsán. (Požadované)
  • výstupní_adresář_cesta: Adresář, do kterého budou zapsány podepsané objekty kódu. Pokud je výstupní_cesta vynechána, soubor zadaný v -file_path bude přepsán podepsaným souborem.

Příklad pracovního postupu podepisování kódu DLL .NET

Vytvořte soubor yml

Seskupte úlohy do fází. Všechny úlohy v jedné fázi musí být dokončeny před provedením další fáze.

etapy: - stavět - sign
 

Definujte proměnné prostředí globálně. Vlastnost na úrovni úlohy přepíše globální proměnné.

  • Proměnné prostředí se používají k lepší čitelnosti vzorků. Na výše uvedeném snímku obrazovky příkladu pracovního postupu byly volitelně vynechány PROJECT_NAME, PROJECT_VERSION a DOTNET_VERSION. Podepisování může pokračovat i s těmito opomenutími.  
  • V části ENVIRONMENT_NAME umístěte „TEST“ pro testovací podepisování a „PROD“ pro živé podepisování.
proměnné: PROJECT_NAME: "HelloWorld" PROJECT_VERSION: "0.0.1" DOTNET_VERSION: "3.1" ENVIRONMENT_NAME: "PROD"
 

Definujte Fáze výstavby

Níže je uvedena definice vaší práce při vytváření dll artefaktu

build-dotnet:

 

  1. Definujte, v jaké fázi bude úloha probíhat.
  etapa: stavět

 

  1. Vložte celý název obrázku, který má být použit. V případě potřeby by měl obsahovat část Registry.
 obrázek: mcr.microsoft.com/dotnet/sdk:3.1-bullseye

 

  1. Definujte skripty, které by se měly spustit *před* úlohou. Lze nastavit globálně nebo na zakázku.
before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/packages

 

  1. Definujte skripty Shell spouštěné Runnerem. Sestavení artefaktu DLL
skript: - 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. Zadejte seznam souborů a adresářů, které by měly být připojeny k úloze, pokud bude úspěšná.
  • "expire_inVlastnost ' umožňuje smazání souboru po určité době. Jeho použití je volitelné. To je důvod, proč snímek obrazovky s ukázkovým pracovním postupem výše tuto vlastnost nezobrazuje.
artefakty: cesty: - ${CI_PROJECT_DIR}/packages/HelloWorld.dll expire_in: 5 minut
 

Definujte fázi znamení

Níže je uvedena definice vašeho úkolu podepsat dll artefakt

sign-dotnet-artifacts:

 

  1. Definujte, v jaké fázi bude úloha probíhat.
  etapa: znamení

 

  1. Vložte celý název obrázku, který má být použit. V případě potřeby by měl obsahovat část Registry.
 obrázek: docker:19.03.0

 

  1. Definujte služby. Toto je podobné vlastnosti `image`, ale propojí zadané služby s kontejnerem `image`.
služby: - ​​docker:19.03.0-dind

 

  1. Definujte proměnné prostředí pro konkrétní úlohy.
  • Na výše uvedeném snímku obrazovky byl příkaz sign definován přímo ve skriptu sign a nikoli pod proměnnými prostředí. Bostatní metody se mohou správně podepsat pomocí TravisCI.
  proměnné: COMMAND: "sign"

 

  1. Definujte skripty, které by se měly spustit *před* úlohou. Lze nastavit globálně nebo na zakázku.
  before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/packages

 

  1. Umístěte skripty Shell spouštěné Runnerem. Podepište artefakt .NET dll pomocí CodeSignTool Docker Image
skript: - 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:latest ${COMMAND} -input_file_path=/codesign/examples/${PROJECT_NAME}.dll -output_dir_path=/codesign/output

 

  1. Napište skript, který lze použít k určení seznamu souborů a adresářů, které by měly být připojeny k úloze, pokud bude úspěšná.
artefakty: cesty: - ${CI_PROJECT_DIR}/artifacts/${PROJECT_NAME}.dll expire_in: 1 days

 

  1. Zadejte seznam názvů úloh z dřívějších fází, ze kterých by se měly načítat artefakty.
závislosti: - build-dotnet

SSL.com EV Podepisování kódu certifikáty pomáhají chránit váš kód před neoprávněnou manipulací a kompromitací s nejvyšší úrovní ověření a jsou k dispozici za pouhých $ 249 za rok. Můžete také používejte certifikát EV Code Signing ve velkém měřítku v cloudu pomocí eSigner.

OBJEDNAT TEĎ

Zahajte fázi sestavení

Vytvořte úložiště

Podívejte se na pokyny pro příkazový řádek na Gitlabu, jak je vidět na obrázku níže

Posuňte složku

Udělejte to kliknutím terminál v nabídce a poté Nový terminál.

Chcete-li projekt odeslat, zadejte na svém terminálu push skript 

Klepněte na tlačítko Sestavit

Po spuštění potrubí pokračujte ve stavbě

Zkontrolujte, zda je sestavení úspěšné  

Spusťte fázi znamení

Pokračujte k podpisu artefaktu

Potvrďte, zda bylo podepsání kódu úspěšné

Nyní si můžete stáhnout podepsaný soubor

Můžete se obrátit na SSL.com Repozitář Github, který obsahuje zdrojové kódy obrazu dockeru a popisuje, jak jej používat: https://github.com/SSLcom/ci-images 

Ukázka Gitlab CI Pipeline

Podívejte se na ukázkový Gitlab CI pipeline, na kterém jsme vytvořili github.com/SSLcom/codesigner-gitlabci-sample

Další příručky pro integraci vzdáleného podepisování CI/CD

Potřebujete vlastní řešení? 

S našimi odbornými znalostmi a pětihvězdičkovým podpůrným personálem jsme připraveni a ochotni s vámi spolupracovat na vlastních řešeních nebo slevách na velkoobjemové podpisy na podnikové úrovni. Vyplňte formulář níže a my se vám ozveme.

Přihlaste se k odběru zpravodaje SSL.com

Nenechte si ujít nové články a aktualizace z SSL.com

Zůstaňte informováni a zabezpečte se

SSL.com je světovým lídrem v oblasti kybernetické bezpečnosti, PKI a digitální certifikáty. Přihlaste se k odběru nejnovějších zpráv z oboru, tipů a oznámení o produktech SSL.com.

Budeme rádi za vaši zpětnou vazbu

Vyplňte náš průzkum a sdělte nám svůj názor na váš nedávný nákup.