This repository demonstrates a complete, production-ready implementation of the Witness framework for software supply chain security, with a focus on RPM package signing and enterprise deployment.
- β Working GitHub Actions with witness-run-action
- β Complete RPM signing examples (key-based and keyless)
- β Comprehensive documentation for enterprise deployment
- β Validated test scripts for all signing methods
- β Air-gap deployment guides for offline environments
The comprehensive guide covering:
- RPM attestation without GPG dependency
- Keyless signing via Fulcio with TSA counter-signing
- Full offline verification for air-gapped environments
- Multi-KMS support (AWS, Azure, GCP, Vault)
- GitHub Actions integration
- NIST compliance metadata generation
- SBOM generation and attestation
- Security scanning integration
Detailed documentation for:
- Software Bill of Materials (SBOM) generation
- Secret scanning with blocklists
- Vulnerability attestations (SARIF, VEX)
- SLSA provenance with SBOM
- Complete security workflows
View our working GitHub Actions workflow that demonstrates:
- Automatic Sigstore signing via GitHub OIDC
- Attestation storage in Archivista
- Multiple build steps with linked attestations
Latest successful run: View on GitHub Actions
Browse the examples/scripts/
directory for ready-to-run scripts:
test-rpm-signing.sh
- Basic RPM signing with ED25519 keystest-fulcio-keyless.sh
- Keyless signing with Fulcio (browser auth)test-tsa-signing.sh
- TSA counter-signing validationtest-sbom-rpm.sh
- SBOM generation and attestation for RPMs
- uses: testifysec/witness-run-action@v1
with:
step: build
command: make build
No configuration needed - automatic Sigstore and Archivista integration!
Using Fulcio for ephemeral certificates (10-minute validity):
witness run --step build \
--signer-fulcio-url https://fulcio.sigstore.dev \
--timestamp-servers "http://time.certum.pl" \
-- rpmbuild -bb package.spec
Complete offline verification with bundled certificates and policies.
witness-action-test/
βββ .github/workflows/ # GitHub Actions workflows
β βββ witness-test.yml # Main workflow with witness-run-action
βββ docs/ # Documentation
β βββ WITNESS-RPM-GUIDE.md # Complete enterprise guide
βββ examples/
β βββ scripts/ # Test scripts for various scenarios
β β βββ test-rpm-signing.sh
β β βββ test-fulcio-keyless.sh
β β βββ test-tsa-signing.sh
β βββ policies/ # Example witness policies
βββ Makefile # Build targets for testing
βββ README.md # This file
# Install witness
curl -L https://github.com/testifysec/witness/releases/latest/download/witness_$(uname -s)_$(uname -m).tar.gz | tar -xz
sudo mv witness /usr/local/bin/
# Verify installation
witness version
# Clone this repository
git clone https://github.com/colek42/witness-action-test.git
cd witness-action-test
# Run the basic test
make test build package
# Or run with witness attestation
witness run --step build -o attestation.json \
-a environment,material,command-run,product \
-- make build
# Test RPM signing with keys
./examples/scripts/test-rpm-signing.sh
# Test keyless signing (opens browser)
./examples/scripts/test-fulcio-keyless.sh
# Test TSA integration
./examples/scripts/test-tsa-signing.sh
- Material: Input artifacts and dependencies
- Command-run: Exact commands executed
- Product: Output artifacts produced
- Environment: Build environment metadata
- Git: Repository state
- GitHub: GitHub Actions context
Source β Build β Attestation β Storage β Verification
β β β β
Materials Signature Archivista Policy
Commands Timestamp Queryable Trust
Products Identity Permanent Offline
permissions:
id-token: write # Required for Fulcio OIDC
contents: read # Access repository
packages: write # If publishing containers
For private Archivista deployment:
- uses: testifysec/witness-run-action@v1
with:
step: build
command: make build
archivista-server: https://archivista.internal.company.com
All examples in this repository have been tested and verified:
- β GitHub Actions workflow runs successfully
- β Attestations stored in Archivista
- β Keyless signing via Fulcio confirmed
- β TSA counter-signing validated
- β Offline verification tested
- Test step:
795ecd8d94d5936054cd5aad669eb087fd15913aaa379a47e3c9689a0f3f4174
- Build step:
89616e2393ac8784ed54c2e1b17429ee8a1ad3fa695319a2c77dac061620ffa2
- Package step:
8bd10fedcc14bc33dcd8a095038d3ccf15a62f66baa1924cfa336aea4cc12696
Query these attestations:
curl -X POST https://archivista.testifysec.io/query \
-H "Content-Type: application/json" \
-d '{"gitoid": "795ecd8d94d5936054cd5aad669eb087fd15913aaa379a47e3c9689a0f3f4174"}'
- Witness Documentation: https://witness.dev
- TestifySec: https://testifysec.com
- GitHub Action: https://github.com/testifysec/witness-run-action
- Archivista: https://github.com/testifysec/archivista
- This Repository: https://github.com/colek42/witness-action-test
This example repository is provided as-is for demonstration purposes.
Ready for Production: All examples tested and verified
Last Updated: 2025-08-11
Maintained by: TestifySec Team