SHAKEN certificate issuance and renewal lifecycle manager (Certbot for SHAKEN Certs)
Project description
SHAKEN Cert Manager - Certbot for SHAKEN Certs
shaken-cert-manager is an operator-focused lifecycle manager for
STIR/SHAKEN certificates. It issues certificates through stir-shaken-toolkit,
keeps durable archive state, exposes the active certificate through stable live
links, runs lifecycle hooks, reports monitoring status, and cleans up old
material.
It currently supports integration with the Peeringhub.io STI-CA SHAKEN certificate provider -- an active Peeringhub account is required for valid issuance of certificates.
It does not replace your signing service. Your signing service still needs to
read the private key, publish the active certificate chain at the URL used in
PASSporT x5u, insert the Identity header into outbound calls, etc.
Install
From the repository root:
python -m pip install -e .
shaken-cert-manager depends on Peeringhub issuance support from
stir-shaken-toolkit. Install that package in the same environment.
Quick Start
Create a manager config from the example:
cp shaken-cert-manager.example.yaml shaken-cert-manager.yaml
chmod 600 shaken-cert-manager.yaml
Fill in the Peeringhub, STI-PA, certificate subject, account, state, and hook settings needed for the deployment.
See the minimal config example for the smallest useful shape.
Prepare or provision the Peeringhub ACME account key before issuing:
stir-shaken-toolkit peeringhub-account-setup --account-dir /var/lib/shaken/account
Issue the first certificate:
shaken-cert-manager --config shaken-cert-manager.yaml issue-initial
Check status:
shaken-cert-manager --config shaken-cert-manager.yaml status
shaken-cert-manager --config shaken-cert-manager.yaml status --nagios
Run renewal from your scheduler:
shaken-cert-manager --config shaken-cert-manager.yaml renew
Run cleanup periodically:
shaken-cert-manager --config shaken-cert-manager.yaml cleanup
Short-Lived Certificates
See Custom Certificate Length for an example and related issuance settings.
Commands
issue-initial: issue a certificate only when no active usable certificate exists.renew: issue a replacement only when status and renewal policy require it.force-renew: issue a replacement immediately; use--skip-confirmfor non-interactive runs.status: print active certificate health as text, JSON, or Nagios plugin output.cleanup: remove expired inactive archives, stale live links, and old failed transaction archives.
Use --debug before the subcommand for detailed logs with configured secrets
redacted:
shaken-cert-manager --config shaken-cert-manager.yaml --debug status
State Model
The manager owns a state directory, usually /var/lib/shaken:
account/account.key: durable Peeringhub ACME account private key.account/account.json: recoverable Peeringhub ACME account state cache.archive/<generation_id>/: durable certificate generation artifacts.live/<generation_id>/: symlink tree exposing an unexpired generation.live/current: symlink to the active live generation.active.json: active generation manifest.last-attempt.json: result of the last manager command that records state.failed/<generation_id>/: retained failed transaction diagnostics.
Publish live/current/certificate-chain.pem from your HTTPS certificate URL and
configure your signing service to use account/account.key as the private key.
Do not publish account.key.
More Documentation
- Configuration: config keys, environment overrides, defaults, and example setup guidance.
- Operations: issuance, renewal, activation, cleanup, and state inspection workflows.
- Automation: cron and systemd timer examples for unattended renewal.
- Monitoring: text, JSON, and Nagios status output.
- Lifecycle Hooks: pre-activation and deploy hook behavior.
- Subject Templates: advanced subject common name customization.
- Shell Completion: generated completion through
argcomplete.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shaken_cert_manager-1.0.1.tar.gz.
File metadata
- Download URL: shaken_cert_manager-1.0.1.tar.gz
- Upload date:
- Size: 25.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb3cb0bfa71692470fd513d4a5375887959fa68a08abaca8397d6a7f7e7a6556
|
|
| MD5 |
29e1b6458a1c59fa292edbdc7c28b695
|
|
| BLAKE2b-256 |
e4e7379799146dba94b78a0c303755e5009c07faeeeceab939cb1db82d45b819
|
Provenance
The following attestation bundles were made for shaken_cert_manager-1.0.1.tar.gz:
Publisher:
pypi.yml on peeringhub-io/shaken-cert-manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
shaken_cert_manager-1.0.1.tar.gz -
Subject digest:
fb3cb0bfa71692470fd513d4a5375887959fa68a08abaca8397d6a7f7e7a6556 - Sigstore transparency entry: 1525532435
- Sigstore integration time:
-
Permalink:
peeringhub-io/shaken-cert-manager@4ed1d23d6f208916ef87f2d5edd710c7107c2b71 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/peeringhub-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@4ed1d23d6f208916ef87f2d5edd710c7107c2b71 -
Trigger Event:
push
-
Statement type:
File details
Details for the file shaken_cert_manager-1.0.1-py3-none-any.whl.
File metadata
- Download URL: shaken_cert_manager-1.0.1-py3-none-any.whl
- Upload date:
- Size: 26.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ac2f66d42dc029b00c1c17f8ed552af741bef1c3d1b22d9e0d963a1777dda32
|
|
| MD5 |
7cfd22a058a8e92f45546e3f7244b7b5
|
|
| BLAKE2b-256 |
d36a7e1a4f23ab76a1b3f8f46738e5a88993fb2eec361c4c4af471a482d057ec
|
Provenance
The following attestation bundles were made for shaken_cert_manager-1.0.1-py3-none-any.whl:
Publisher:
pypi.yml on peeringhub-io/shaken-cert-manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
shaken_cert_manager-1.0.1-py3-none-any.whl -
Subject digest:
9ac2f66d42dc029b00c1c17f8ed552af741bef1c3d1b22d9e0d963a1777dda32 - Sigstore transparency entry: 1525532454
- Sigstore integration time:
-
Permalink:
peeringhub-io/shaken-cert-manager@4ed1d23d6f208916ef87f2d5edd710c7107c2b71 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/peeringhub-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@4ed1d23d6f208916ef87f2d5edd710c7107c2b71 -
Trigger Event:
push
-
Statement type: