2.6 KiB
2.6 KiB
CI/CD Keyless Signing Workflow Templates (GitHub/GitLab/Gitea)
Module
Signer
Status
IMPLEMENTED
Description
Production-ready reusable CI/CD workflow templates for keyless signing integration across GitHub Actions (stellaops-sign.yml, stellaops-verify.yml), GitLab CI (.gitlab-ci-stellaops.yml), and Gitea. Enables zero-configuration OIDC-based keyless signing with identity verification gates and cross-platform signature verification.
Implementation Details
- SigstoreSigningService:
src/Signer/StellaOps.Signer/StellaOps.Signer.Infrastructure/Sigstore/SigstoreSigningService.cs-- orchestrates complete Sigstore keyless signing: (1) generate ephemeral ECDSA P-256 key pair, (2) compute SHA-256 artifact hash, (3) create proof-of-possession by signing OIDC token, (4) request certificate from Fulcio, (5) sign artifact with ephemeral key, (6) upload to Rekor transparency log; VerifyKeylessAsync validates signature, certificate, and Rekor entry timestamp - SigstoreServiceCollectionExtensions:
src/Signer/StellaOps.Signer/StellaOps.Signer.Infrastructure/Sigstore/SigstoreServiceCollectionExtensions.cs-- DI registration for Sigstore services - SigstoreOptions:
src/Signer/StellaOps.Signer/StellaOps.Signer.Infrastructure/Sigstore/SigstoreOptions.cs-- configurable Fulcio URL, Rekor URL, RequireRekorEntry flag, retry/backoff settings - SignerEndpoints:
src/Signer/StellaOps.Signer/StellaOps.Signer.WebService/Endpoints/SignerEndpoints.cs-- signing API endpoints consumed by CI/CD workflow templates - AmbientOidcTokenProvider:
src/Signer/__Libraries/StellaOps.Signer.Keyless/AmbientOidcTokenProvider.cs-- detects OIDC tokens from CI runner environment (GitHub Actions, GitLab CI, Gitea) - KeylessDsseSigner:
src/Signer/__Libraries/StellaOps.Signer.Keyless/KeylessDsseSigner.cs-- DSSE signer used by workflow templates for in-toto statement signing - Source: SPRINT_20251226_004_BE_cicd_signing_templates.md
E2E Test Plan
- Verify signing endpoint accepts OIDC identity token and returns signed DSSE envelope with certificate chain
- Verify verification endpoint validates signature, certificate chain, and Rekor entry
- Test ambient OIDC token detection for GitHub Actions, GitLab CI, and Gitea CI environments
- Verify Rekor transparency log entry is created when RequireRekorEntry is enabled
- Verify signing fails gracefully when Fulcio is unavailable (proper error response)
- Test cross-platform signature verification: sign on GitHub Actions, verify on GitLab CI
- Verify signed artifacts include proper in-toto statement format with subject digests