checkId: check.compliance.attestation-signing plugin: stellaops.doctor.compliance severity: fail tags: [compliance, attestation, signing, crypto]

Attestation Signing Health

Doctor check check.compliance.attestation-signing — for operators and compliance engineers keeping the Stella Ops evidence chain signable.

What It Checks

Monitors attestation signing capability by querying the Attestor service at /api/v1/signing/status. The check validates:

The check only runs when Attestor:Url or Services:Attestor:Url is configured. It uses a 10-second HTTP timeout.

ConditionResult
Attestor unreachable or HTTP errorFail
Key not availableFail
Key expiredFail
Key expires within 30 daysWarn
Key available and not expiring soonPass

Why It Matters

Attestation signing is the foundation of Stella Ops’ evidence chain. Without a working signing key, the system cannot create attestations for releases, SBOM scans, or policy decisions. This breaks the entire compliance audit trail and makes releases unverifiable. Key expiration without timely rotation causes the same downstream impact as a missing key, but with no advance warning unless monitored.

Common Causes

How to Fix

Docker Compose

Verify the Attestor service is running and the URL is correct:

# Check attestor container health
docker compose ps attestor

# Verify signing key status
docker compose exec attestor stella attestor key status

# If key is expired, rotate it
docker compose exec attestor stella attestor key rotate

# Ensure the URL is correct in your .env or compose override
# Attestor__Url=http://attestor:5082

Bare Metal / systemd

Check the Attestor service and key configuration:

# Check service status
sudo systemctl status stellaops-attestor

# Verify key status
stella attestor key status

# Test HSM/KMS connectivity
stella attestor hsm test

# Rotate an expired key
stella attestor key rotate

# If using appsettings.json, verify Attestor:Url is correct
cat /etc/stellaops/appsettings.json | jq '.Attestor'

Kubernetes / Helm

# Check attestor pod status
kubectl get pods -l app=stellaops-attestor

# Check signing key status
kubectl exec deploy/stellaops-attestor -- stella attestor key status

# Verify HSM/KMS connectivity from the pod
kubectl exec deploy/stellaops-attestor -- stella attestor hsm test

# Schedule key rotation via Helm values
helm upgrade stellaops ./charts/stellaops \
  --set attestor.keyRotation.enabled=true \
  --set attestor.keyRotation.scheduleBeforeExpiryDays=30

Verification

stella doctor run --check check.compliance.attestation-signing

See the Doctor reference for the full check catalog, CLI usage, and export bundles.