GitHub Actions is een platform voor continue integratie en continue ontwikkeling (CI/CD) waarmee gebruikers hun build-, test- en implementatiepijplijn kunnen automatiseren. Gebruikers kunnen workflows ontwerpen die elke pull- en push-aanvraag naar hun repository bouwen en testen, of samengevoegde pull-aanvragen naar productie implementeren. GitHub Actions is een krachtige tool waarmee ontwikkelaars workflows binnen hun GitHub-repository's kunnen automatiseren.
Elke workflow bestaat uit een of meer taken, die op hun beurt weer uit een of meer stappen bestaan. Elke stap is een reeks opdrachten die worden uitgevoerd op een runner, een virtuele machine die uw workflows uitvoert.
Aan de slag met GitHub-acties
Om aan de slag te gaan met GitHub Actions heb je een GitHub-account en een repository nodig. Nadat je je repository hebt aangemaakt, kun je een nieuwe workflow maken door een YAML-bestand toe te voegen aan de map .github/workflows in je repository.
Hieronder staan enkele termen die worden gebruikt in de workflow voor het definiëren van YAML-bestanden. Laten we deze workflow eens nader bekijken om te begrijpen hoe deze werkt:
-
naam: Dit is de naam van de workflow. -
op: Hiermee wordt aangegeven wanneer de workflow moet worden geactiveerd. De workflow kan bijvoorbeeld worden uitgevoerd wanneer een pull-request op een branch wordt geopend. -
banen: Dit is een lijst met taken die worden uitgevoerd als onderdeel van de workflow. -
run-on: Hiermee specificeren we het besturingssysteem en de omgeving voor de taak. We kunnen een zelfgehoste runner voor onze taak instellen. We gaan hiervoor een zelfgehoste runner instellen.
-
stappen: Hierin wordt een lijst met stappen gespecificeerd die als onderdeel van de taak zullen worden uitgevoerd.
-
Gebruik: Dit is een snelkoppeling voor het gebruiken van een bestaande actie uit de GitHub Marketplace. In ons script gebruiken we de actie actions/checkout om de code van de repository uit te checken.
-
naam: Dit is de naam van de stap. -
run: Dit is een shell-opdracht die als onderdeel van de stap wordt uitgevoerd.
Co-designen met behulp van GitHub Actions
Codeondertekening is het proces waarbij softwarecode digitaal wordt ondertekend om de authenticiteit en integriteit ervan te verifiëren. Het is een beveiligingsmaatregel die ervoor zorgt dat de code niet is gemanipuleerd en afkomstig is van een betrouwbare bron.
We kunnen codesignen met behulp van GitHub-acties. Hiervoor maken we een workflow aan in de gewenste repository in GitHub en voeren we codesignen uit met behulp van het script.
Vereisten voor het uitvoeren van deze taak zijn:
- Een GitHub-repository (hiervoor hebt u een beheerdersaccount nodig).
- Een Runner waarin Signtool en ECSigning KSP worden geïnstalleerd en geconfigureerd.
Voordat we beginnen, moeten we een runner configureren. De runner wordt geïnstalleerd op het apparaat waarop u Signtool en ECSigning KSP hebt geïnstalleerd en geconfigureerd. Volg de onderstaande stappen om dit op uw apparaat te doen.
Volg de onderstaande stappen om Signtool in te stellen en te configureren:
Signtool kan worden gedownload als onderdeel van de Windows SDK. Download de Windows SDK: ( developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/ )
U kunt ervoor kiezen om alleen de Windows SDK Signing Tools voor desktop-apps te installeren.
Open het bestand winsdksetup.exe. Onthoud het standaardpad dat wordt weergegeven in het installatiepad, omdat dit handig is bij het uitvoeren van deze opdrachten vanaf de opdrachtprompt.

Op de pagina Windows Kits Privacy is elke optie om Microsoft toestemming te geven om inzichten te verzamelen in orde. Klik op Volgende.

Accepteer de licentieovereenkomst

Deselecteer alle functies behalve Windows SDK Signing Tools voor desktop-apps en selecteer vervolgens installeren.

Wanneer u wordt gevraagd of u wilt toestaan dat deze app wijzigingen aanbrengt, selecteert u Ja.


Klik op de Windows-zoekbalk op de taakbalk en typ 'Bewerk de systeemomgevingsvariabelen'. Selecteer vervolgens de gelijknamige optie in het Configuratiescherm.

Klik op omgevingsvariabelen.

Voordat u de variabelenlijst bewerkt, navigeert u met behulp van Verkenner naar de installatielocatie van de Windows SDK. U moet het pad kopiëren van de map waarin de Signtool-applicatie zich bevindt. Het standaardpad is C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64 ( zie onderstaande schermafbeelding). Zorg ervoor dat u met de rechtermuisknop klikt en het pad kopieert zoals weergegeven. U ziet de Signtool-applicatie ook onderaan de lijst met bestanden; dit is de opdracht die u moet uitvoeren.

Klik in de lijst met systeemvariabelen op 'Nieuw'. Typ vervolgens 'Pad' als variabelenaam en kopieer en plak het pad. Klik daarna op 'OK' in het venster met omgevingsvariabelen en het venster met systeeminstellingen.

Om de installatie te testen, opent u de opdrachtprompt en typt u signtool. De uitvoer zou er dan als volgt uit moeten zien.

De standaard installatielocatie van signtool is bijvoorbeeld: C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64
Om KSP in te stellen, volgt u de onderstaande stappen:
Encryption Consulting biedt u de oplossing CodeSignSecure aan . Deze oplossing helpt u bij het veilig opslaan van sleutels en zorgt voor volledig inzicht in en controle over uw codeondertekeningsactiviteiten. De privésleutels van het codeondertekeningscertificaat kunnen worden opgeslagen in een HSM (Hardware Security Module) om de risico's van gestolen, beschadigde of misbruikte sleutels te elimineren.
Als u onze oplossing gebruikt, kunt u de KSP downloaden met behulp van de onderstaande stappen:
- Inloggen Code Sign Secure.
-
Navigeer naar: Signing tools repository.

- Download “Encryptie Consulting CNG-SigningKSP”
-
Installeer de clienttools met behulp van het .MSI-installatieprogramma. Het .MSI-installatieprogramma automatiseert een groot deel van de configuratie. Navigeer naar de locatie waar het gedownloade bestand is opgeslagen en start het installatieprogramma.

-
Klik op Volgende wanneer de installatiewizard verschijnt.

-
Klik volgende.

- In de Gebruikersnaam veld, typ admin.
-
Kopieer in het veld 'Code' de code uit de Postman API-repository . Klik op de GetLoginToken API en kopieer de code uit het veld 'Body'.
Download Postman via deze link . Klik na het downloaden op de knop 'Overslaan' onderaan het venster. Voeg in het dashboard een nieuwe collectie toe met het plusteken naast 'Collecties'.
GetLoginToken API (http://codesignsecureapi.encryptionconsulting.com/api/auth/GetLoginToken): Dit is de belangrijkste API, omdat deze u een Bearer Token geeft die u met de andere API's kunt gebruiken. Wat er in de body moet staan, wordt hieronder weergegeven. De code dient als wachtwoord om de Bearer Token te verkrijgen, het veld 'user' is de gebruikersnaam en het veld 'identity type' specificeert het gebruikerstype. Klik op 'Send' om een uitvoer te genereren met de Bearer Token onderaan. Kopieer deze token voor gebruik.

- Verander de Identiteit Type om 1.
- Verlof API BaseURL hetzelfde.
-
Klik volgende.

-
Klik volgende.

-
U krijgt dan een melding dat dit programma wijzigingen zal aanbrengen op uw pc. Klik op Ja.

-
De installatie is nu voltooid.

Om de loper op te zetten, volgt u onderstaande stappen:
Navigeer naar uw Github-repository.
- Navigeer naar Instellingen van Repository
- Scroll naar beneden naar Acties en selecteer Renner in het dropdownmenu.
Klik op Nieuwe zelf-gehoste hardloper.

Daarna kunt u op de afbeelding van de runner (macOS/Linux/Windows) van uw keuze klikken. De onderstaande instructies zijn voor Windows. U ziet verschillende opdrachten op het scherm.
Voer de opdrachten uit die in de configuratie van de runner worden weergegeven. De opdrachten staan ook hieronder:
- mkdir acties-runner; cd acties-runner;
- Invoke-WebRequest-Url https://github.com/actions/runner/releases/download/v2.303.0/actions-runner-win-x64-2.303.0.zip -OutFile-acties-runner-win-x64-2.303.0.zip
- Add-Type -AssemblyName Systeem.IO.Compressie.FileSystem; [Systeem.IO.Compressie.ZipFile]::ExtractToDirectory(“$PWD/actions-runner-win-x64-2.303.0.zip”, “$PWD”)
- ./config.cmd –url https://github.com/Encryption-Consulting-LLC/CodeSignSecure-Desktop –token
Zodra u Github Actions op uw scherm ziet staan, wordt u gevraagd om u als deelnemer te registreren.

- Voer de naam in van de groep hardlopers waaraan u deze hardloper wilt toevoegen: [druk op Enter voor Standaard] (U kunt deze optie op de standaardinstelling laten staan).
- Voer de naam van de loper in: [druk op Enter voor CLIENT] (U kunt de gewenste naam voor uw loper invoeren).
-
Deze runner heeft de volgende labels: 'zelf gehost', 'Windows', 'X64'
Voer eventuele extra labels in (bijv. label-1,label-2): [druk op Enter om over te slaan] (Voer hier een label in, het kan van alles zijn, sla deze stap niet over. Dezelfde naam wordt later gebruikt om runner in het script aan te roepen).
-
Het volgende wordt op uw scherm weergegeven zodra het klaar is
- Loper succesvol toegevoegd
- De verbinding met de hardloper is goed
- Runner-instellingen
Voer de naam van de werkmap in: [druk op Enter voor _werk] (U kunt dit op de standaardinstelling laten staan of een map naar keuze opgeven)
Instellingen opgeslagen
- Wilt u de loper als service gebruiken? (J/N) [druk op Enter voor N] (Voer J in)
-
Gebruikersaccount dat voor de service moet worden gebruikt [druk op Enter voor NT AUTHORITY\NETWORK SERVICE] (Zorg ervoor dat u hier Administrator invoert)
(Beheerdersrechten zijn vereist om de opdracht uit te voeren. Het is daarom VERPLICHT om de gebruiker als beheerder in te stellen.)
- Wachtwoord voor het account CLIENT\Administrator (geef het wachtwoord van uw beheerdersaccount op)
-
Zodra u klaar bent, ziet u het volgende bericht op uw scherm.
Er wordt gevraagd als Service actions.runner. .
Bestandsrechten verlenen aan 'CLIENT\Administrator'.
Service actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree succesvol geïnstalleerd
Service actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree heeft de hersteloptie succesvol ingesteld
Service actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree is succesvol ingesteld op vertraagd automatisch starten
Service actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree succesvol geconfigureerd
Wachten tot de service start…
Service actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree is succesvol gestart
Zodra de runner op uw apparaat is ingesteld, navigeert u naar uw repository in GitHub.
Ga naar Acties.
Klik op Nieuwe workflow
Klik op Zelf een workflow instellen

Zo ziet uw editor eruit. U kunt uw .yaml-bestand hernoemen of de standaardnaam behouden.

Voeg het onderstaande script toe aan uw editor nadat u enkele wijzigingen hebt aangebracht of de variabelen hebt bijgewerkt.
naam: Code Signing op: push: branches: <[ Uw Branch Naam ]> jobs: build: runs-on: stappen: - naam: Checkout-code gebruikt: actions/checkout@v2 - naam: Ondertekeningscode uitgevoerd: | signtool sign /csp "Encryption Consulting Key Storage provider" /kc /fd /F " " /tr /td SHA256 " "
Vervang de variabelen die zijn opgegeven onder <variabelenaam> . Een korte beschrijving van de verwachte variabele vindt u hieronder.
<bestandspad> : Hier geeft u het pad op van het bestand dat u wilt ondertekenen. Bijvoorbeeld: C:\<Mapnaam>\<Bestandsnaam>. Zorg ervoor dat u een bestandsnaam met de juiste extensie hebt opgegeven.
<sleutelnaam> Dit verwijst naar de cryptografische sleutel die gebruikt wordt om de code te ondertekenen. Voorbeeld: evcodesigning
<certificaatlocatie> : Een voorbeeld van wat u in dit veld kunt invoeren is C:\testing.pem. Het certificaatbestand (.pem) MOET in dit veld worden opgenomen. U kunt een .pem-bestand van het certificaat genereren voor ondertekening, als u de sleutelnaam ECSigningKSP gebruikt. Volg hiervoor de onderstaande opdrachten:
Navigeer op het apparaat waarop u ECSigningKSP hebt geïnstalleerd en geconfigureerd naar de map van ECSigningKSP, die zich meestal bevindt in "C:\Program Files\Encryption Consulting\SigningKSP".
Ga via de opdrachtprompt naar deze map.
Gebruik vervolgens de volgende opdracht om het pem-bestand van het certificaat op te halen.
ECGetCert.exe <Key_Name> (voorbeeld: ECGetCert.exe evcodesigning)
Geef de locatie op waar het certificaat is opgeslagen.
<hashalgoritme> : U moet de naam van het hashalgoritme opgeven, zoals SHA256, SHA384 of SHA512. Het moet een van deze drie waarden zijn.
<tijdstempelserver>: Een tijdstempelserver levert bewijs dat een digitale handtekening op een specifiek tijdstip is gezet , waardoor in de toekomst kan worden geverifieerd dat een bestand op een bepaald tijdstip is ondertekend. De server die wij doorgaans gebruiken is http://timestamp.digicert.com
Het commando dat ik gebruikte om te ondertekenen was
signtool sign /csp "Encryptie Consulting Sleutelopslagprovider" /kc evcodesigning /fd SHA256 /f "C:\Users\Administrator\Desktop\ForTesting\evcodesigning.pem" /tr http://timestamp.digicert.com /td SHA256 "C:\Users\Administrator\Desktop\ForTesting\AgentService.exe"
Het script dat ik gebruikte was:
naam: Code Signing op: push: branches: [ Github_Actions ] jobs: build: runs-on: runner stappen: - naam: Checkout code gebruikt: actions/checkout@v2 - naam: Sign code run: | signtool sign /csp "Encryption Consulting Key Storage provider" /kc evcodesigning /fd SHA256 /f "C:\Users\Administrator\Desktop\ForTesting\evcodesigning.pem" /tr http://timestamp.digicert.com /td SHA256 "C:\Users\Administrator\Desktop\ForTesting\AgentService.exe"
Zodra je je script hebt bewerkt, klik je op 'commit'. Je kunt direct committen naar je standaardbranch of naar een nieuwe branch. Zorg ervoor dat je de naam van je branch in de code bijwerkt. Na het committen wordt de taak uitgevoerd.

Conclusie
Encryption Consulting biedt u een codeondertekeningsoplossing genaamd CodeSign Secure . U kunt contact met ons opnemen om de SigningKSP en de sleutelnaam te verkrijgen. Codeondertekening met Github Actions is een eenvoudig proces. Een gebruiker hoeft alleen de runner te configureren en het script uit te voeren. U kunt contact met ons opnemen via [email protected] voor verdere hulp.
