Changelog
User-visible changes in each release, newest first. Binaries and checksums are on the GitHub releases page.
v0.8.1 · 2026-09-26
intermediate-cano longer printsNote: validity capped at the issuer's expiryfor a default intermediate under a fresh root. Both default to 2190 days, so the intermediate overshot the root by the seconds between the two commands. The note now appears only when the cut is longer than an hour.- The website is split into a home page and a documentation section, with search and a release badge.
v0.8.0 · 2026-09-26
--validityon every command that signs: days (90d) or a Go duration (24h). A certificate is capped at its issuer's expiry, with a note. See Server and client certificates.client-cert --san, for URI SANs such as SPIFFE IDs.--key-type ed25519.--pkcs12and--pkcs12-passwordonserver-certandclient-cert.- New
revokeandcrlcommands: intermediate CRL, root CRL and a CRL chain file. Leaflistreports revoked certificates. See Revocation. trustcovers the Linux system store (Debian, Ubuntu, Alpine, Fedora, RHEL, Arch, openSUSE), Firefox/NSS throughcertutiland Javacacertsthroughkeytool, selected with--store. See Trusting the root CA.- Go package:
VerifyRoot,VerifyIntermediate, a nil-safeVerifyChain,LoadCertsfor chain files, andPermit*/Exclude*builders forNameConstraints. See Go package.
⚠
trust status -o json gains a stores array, and trusted is now true only when every checked store accepts the root. Pass the same --store to status that you pass to install.
v0.7.1 · 2026-09-26
root-ca listchecks the self-signature, so a certificate that is not a root no longer lists as valid.- Unit tests for issuance and every command.
v0.7.0 · 2026-09-26
- Certificates are issued with Go's
crypto/x509. OpenSSL no longer needs to be installed. - No CA database: re-issuing a subject overwrites its files. Workdirs from older releases keep working; their OpenSSL files are ignored and
--forceon a tier removes them. - Random 128-bit serial numbers,
NotBeforebackdated 5 minutes. - The signature digest follows the issuer's key: SHA-256 for RSA and P-256, SHA-384 for P-384, SHA-512 for P-521.
- Leaves are verified against their chain before anything is written.
signtakes only the subject and SANs from a request.--name-constraintno longer acceptsdirName.
v0.6.0 · 2026-09-26
--name-constraintonroot-caandintermediate-ca, in openssl syntax, written as a critical extension. Leaves outside the constraints are refused. See Name constraints.
v0.5.0 · 2026-09-22
- New
trustcommand: install, remove and check a Root CA in the macOS System keychain. - New
signcommand for certificate requests generated elsewhere. --key-typefor ECDSA keys:ecdsa/ecdsa-p256,ecdsa-p384,ecdsa-p521.- Generate commands refuse to overwrite existing material.
--forcereplaces it. - The website at bcollard.github.io/homepki.
v0.4.0 · 2026-09-18
- New
skillcommand:skill install,skill path,skill install --print. See Agent Skill.
v0.3.0 · 2026-05-24
server-cert --sanfor extra Subject Alternative Names, withDNS:,IP:,email:andURI:prefixes or automatic detection.
v0.2.0 – v0.2.4 · 2026-04-06 to 2026-04-11
- Chain verification in every
listsubcommand, and-o jsonoutput (v0.2.0). - Short names:
lsandlforlist,vforversion(v0.2.3). server-cert listandclient-cert listreport an empty list instead of an error when no leaf exists yet (v0.2.4).- Installed as a Homebrew cask:
brew install --cask homepki(v0.2.2). Release packaging fixes (v0.2.1).
v0.1.0 – v0.1.6 · 2025-12-04
- First release as a Go CLI:
root-ca,intermediate-ca,server-certandclient-cert, each with alistsubcommand. - Releases built by GoReleaser and published to the
bcollard/homepkiHomebrew tap. v0.1.1 to v0.1.6 fixed the release pipeline only.