Integrationsguide för GitHub Actions
Kodsignering med GitHub-åtgärder. För detta skapar vi ett arbetsflöde i vårt önskade repository i GitHub och utför kodsignering med hjälp av skriptet.
Förutsättningar
- Ett GitHub-arkiv (du behöver ett administratörskonto)
- Signtool installerat och konfigurerat
- ECSigning KSP installerad och konfigurerad.
Installation och konfiguration
För att installera och konfigurera Signtool och ECSigning KSP, följ stegen som anges här.
Innan vi börjar behöver vi konfigurera en runner. Runner kommer att konfigureras på den enhet där du har SIgntool och ECSigning KSP installerade och konfigurerade.
För att ställa in löparen, följ stegen nedan:
-
Navigera till ditt GitHub-arkiv
Du behöver ett administratörskonto för detta.
- Navigera till inställningarna för arkivet.
- Scrolla ner till Åtgärder och välj Löpare från rullgardinsmenyn.
- Klicka på Ny självhostad löpare.
-
När du har gjort det kan du klicka på den löparbild (macOS/Linux/Windows) du vill ha. Instruktionerna nedan gäller för Windows. Du kommer att se ett antal kommandon som ska följas på skärmen.
Kör kommandona som visades i runnerkonfigurationen. Kommandona ges också nedan:
mkdir actions-runner; cd actions-runner
Invoke-WebRequest -Uri https://github.com/actions/runner/releases/download/v2.303.0/actions-runner-win-x64-2.303.0.zip -OutFile actions-runner-win-x64-2.303.0.zipTilläggstyp -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::ExtractToDirectory("$PWD/actions-runner-win-x64-2.303.0.zip", "$PWD")./config.cmd --url https://github.com/Encryption-Consulting-LLC/CodeSignSecure-Desktop --token
-
När du ser GitHub Actions skrivna på skärmen blir du ombedd att registrera dig som löpare.
- Ange namnet på löpargruppen som löparen ska läggas till i: [tryck Enter för standardinställning] (Du kan lämna detta till standardinställningen).
- Ange löparens namn: [tryck Enter för KLIENT] (Du kan ange önskat namn för din löpare).
-
Denna runner kommer att ha följande etiketter: 'självhostad', 'Windows', 'X64'
Ange eventuella ytterligare etiketter (t.ex. etikett-1, etikett-2): [tryck Enter för att hoppa över] (Ange en etikett här, det kan vara vad som helst, lämna/hoppa inte över det här steget. Samma namn kommer att användas senare för att anropa löparen i skriptet).
-
Följande kommer att visas på skärmen när det är klart
- Löpare har lagts till
- Löparkopplingen är bra
- Löparinställningar: Ange namn på arbetsmappen: [tryck Enter för _arbete] (Du kan lämna detta till standardinställningen, eller så kan du ange en mapp du själv väljer)
-
Inställningar sparade:
- Vill du köra löparen som en tjänst? (J/N) [tryck Enter för N] (Ange J)
-
Användarkonto som ska användas för tjänsten [tryck Enter för NT AUTHORITY\NETWORK SERVICE] (Se till att du anger Administratör här)
Administratörsbehörighet krävs för att köra kommandot. Därför är det MÅSTE att ställa in användaren som administratör. - Lösenord för kontot CLIENT\Administrator (Ange lösenordet för ditt administratörskonto)
- När du är klar kommer du att se följande uppmaning på skärmen. Den kommer att visas som Service actions.runner. .
Beviljar filbehörigheter till 'KLIENT\Administratör'.
Tjänst actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree har installerats
Service actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree har ställt in återställningsalternativet
Tjänsten actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree har ställts in på fördröjd automatisk start.
Tjänsten actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree har konfigurerats
Väntar på att tjänsten ska starta…
Tjänsten actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree startade utan problem
-
När löparen är konfigurerad på din enhet, navigera till ditt repository i GitHub.
- Gå till Åtgärder
- Klicka på Nytt arbetsflöde
-
Klicka på Konfigurera ett arbetsflöde själv
Så här kommer din editor att se ut. Du kan byta namn på din .yaml-fil eller lämna namnet som det är.
-
Lägg till skriptet nedan i din editor efter att du har gjort några ändringar eller uppdaterat variablerna.
namn: Kodinloggning på: push: branches: <[ Ditt filialnamn ]> jobs: build: runs-on: steg: - namn: Utcheckningskod använder: actions/checkout@v2 - namn: Signera kod körs: | signtool signera /csp "Krypteringskonsulttjänst för nyckellagring" /kc /fd /f " " /tr /td SHA256 " "Vänligen ersätt variablerna som anges under En kort beskrivning av den förväntade variabeln ges nedan:
- : Här anger du sökvägen till filen som du vill signera. Exempel C:\ \ Se till att du har angett ett filnamn med rätt filändelse.
- : Detta hänvisar till den kryptografiska nyckel som används för att signera koden. Exempel: evcodesigning.
-
<certifikatplats>: Ett exempel på vad som kan anges i det här fältet är C:\testing.pem. Filen certificate.pem MÅSTE inkluderas i denna inmatning. Du kan generera en pem-fil av certifikatet för samdesign om du har nyckelnamnet med hjälp av ECSigningKSP. För att göra det, följ kommandona nedan:
På den enhet där du har ECSigningKSP installerat och konfigurerat, navigera till mappen för ECSigningKSP, som vanligtvis finns i "C:\Program Files\Encryption Consulting\SigningKSP".
Gå till den här katalogen i kommandotolken. Använd sedan följande kommando för att hämta certifikatets PEM-fil.
ECGetCert.exe
exempel: ECGetCert.exe evcodesigning
Ange platsen för det sparade certifikatet.
-
<hashingalgoritm>: Du måste ange namnet på hashingalgoritmen, till exempel SHA256, SHA384 eller SHA512. Det måste vara ett av dessa tre värden.
-
<tidsstämpelserver>: En tidsstämpelserver tillhandahåller bevis på att en digital signatur utfördes vid en viss tidpunkt, vilket möjliggör verifiering i framtiden att en fil signerades vid en viss tidpunkt. Den vi vanligtvis använder är http://timestamp.digicert.com
Kommandot jag använde för signering var
signtool sign /csp "Krypteringskonsulttjänst för nyckellagring" /kc evcodesigning /fd SHA256 /f "C:\Användare\Administratör\Skrivbord\FörTesting\evcodesigning.pem" /tr http://timestamp.digicert.com /td SHA256 "C:\Användare\Administratör\Skrivbord\FörTesting\AgentService.exe"Skriptet jag använde var:
Namn: Kod Signing on: push: branches: [ Github_Actions ] jobs: build: runs-on: runner steps: - name: Utcheckningskod använder: actions/checkout@v2 - name: Signera kod kör: | signtool sign /csp "Krypteringskonsulttjänst för nyckellagring" /kc evcodesigning /fd SHA256 /f "C:\Användare\Administratör\Desktop\FörTesting\evcodesigning.pem" /tr http://timestamp.digicert.com /td SHA256 "C:\Användare\Administratör\Desktop\FörTesting\AgentService.exe" -
När du har redigerat ditt skript klickar du på commit. Du kan commit direkt till din standardgren eller commit till en ny gren. Se till att du uppdaterar namnet på din gren i koden. Efter commit körs jobbet.
