Certificate inspection, key management, TLS probing, compliance validation, DANE, chain building — no OpenSSL required. Single static binary.
Everything you need for certificate operations, from inspection to issuance.
Decode, verify, fingerprint, and check expiry for any X.509 certificate. Auto-detects PEM, DER, and PKCS#12.
Generate RSA, ECDSA (P-256, P-384), and Ed25519 key pairs. Inspect existing keys.
Connect to any TLS server, inspect the handshake, protocols, cipher suites, and lint the configuration.
TLSA record generation and verification (RFC 6698). Validate against FIPS 140-3, NIST, and Federal Bridge policies.
Validate against FIPS 140-3, NIST guidelines, and Federal Bridge policies. Restrict to approved algorithms.
ML-DSA (FIPS 204) and SLH-DSA (FIPS 205) support behind the pqc feature flag.
Six real-world scenarios — from auditing expired certs to building a post-quantum PKI from scratch. Full demos or 15-second TL;DRs.
Human-readable output with security grades, or pipe to JSON for automation.
shellEvery local PKI operation in one tool — certificate inspection, key management, TLS probing, compliance, DANE, and chain building.
| Command | Description |
|---|---|
| show | Auto-detect and display any PKI file (cert, key, CSR, CRL, PKCS#12) |
| cert | Certificate operations — show, verify, fingerprint, expires |
| key | Key generation (RSA, EC, Ed25519, ML-DSA, SLH-DSA) and inspection |
| chain | Certificate chain building and verification |
| csr | CSR creation and inspection (classical + PQC) |
| crl | CRL viewing and revocation checking |
| revoke | OCSP and CRL revocation status lookups |
| probe | TLS server inspection with security linting |
| acme | ACME / Let's Encrypt certificate enrollment |
| est | EST protocol enrollment (RFC 7030) |
| scep | SCEP enrollment (RFC 8894) — automated certificate issuance |
| pki | Declarative PKI hierarchy builder (TOML → cert tree) |
| batch | Run commands from a script file (skip errors, comments) |
| compliance | FIPS 140-3, NIST, and Federal Bridge validation |
| dane | TLSA record generation (RFC 6698) |
| diff | Side-by-side certificate comparison |
| convert | Format conversion (PEM / DER / PKCS#12) |
| completions | Shell completion scripts (bash, zsh, fish) |
| manpages | Generate man pages |
| shell | Interactive REPL session |
Every command supports five output modes via --format.
openssl x509 -text -noout + lifetime/trust extensionsOne command to install. Zero runtime dependencies.
cargo install --git https://github.com/rayketcham-lab/PKI-Client.git
# Install (sudo on bash, not curl) curl -fsSL https://raw.githubusercontent.com/rayketcham-lab/PKI-Client/main/install.sh | sudo bash # Upgrade curl -fsSL https://raw.githubusercontent.com/rayketcham-lab/PKI-Client/main/install.sh | sudo bash -s -- upgrade # Uninstall curl -fsSL https://raw.githubusercontent.com/rayketcham-lab/PKI-Client/main/install.sh | sudo bash -s -- uninstall
cargo install --git https://github.com/rayketcham-lab/PKI-Client.git --features pqc
# Bash pki completions bash > /etc/bash_completion.d/pki # Zsh pki completions zsh > ~/.zfunc/_pki # Fish pki completions fish > ~/.config/fish/completions/pki.fish
Modular workspace design with a shared CA engine.
| Crate | Role |
|---|---|
| pki-client | Binary — CLI entry point, 19 subcommands + interactive shell |
| pki-client-output | Library — certificate formatting, OID registry, display |
| pki-probe | Library — TLS inspection, cipher analysis, security linting |
| pki-hierarchy | Library — declarative PKI hierarchy builder |
| spork-core | Vendored — CA crypto engine (path dep under vendor/spork-core/) |
Pure Rust, no OpenSSL, human-friendly output. The PKI tool you've been waiting for.
| Command | Status | Notes |
|---|---|---|
| show | ✓ Stable | Auto-detects cert, key, CSR, CRL, PKCS#7, PKCS#12 |
| cert (show, expires, fingerprint) | ✓ Stable | |
| key (gen, show, match) | ✓ Stable | RSA, EC P-256/P-384, Ed25519. PQC (ML-DSA, SLH-DSA) behind --features pqc. |
| csr (create, show) | ✓ Stable | |
| chain (build, show, verify) | ✓ Stable | |
| diff | ✓ Stable | Compares any two certs or CSRs |
| convert | ⚠ Known Issue | PEM↔DER↔Base64 works for certs/CSRs. DER key auto-detect fails (#59) |
| compliance (levels, check, cps, bridge) | ✓ Stable | FIPS 140-3, NIST SP 800-57, Federal Bridge |
| dane (generate, verify) | ✓ Stable | TLSA record generation (RFC 6698) |
| probe (server, check, lint, fetch) | ✓ Stable | TLS inspection, certificate linting, chain fetch |
| revoke (check, crl-show) | ✓ Stable | OCSP + CRL checking |
| pki (preview, build, export) | ✓ Stable | Declarative PKI hierarchy from TOML |
| acme | 🚧 Beta | 17 sub-commands. Directory fetch works. Full flow requires ACME server. |
| est | 🚧 Beta | RFC 7030. Requires EST server for enrollment. |
| scep | 🚧 Beta | RFC 8894. Requires SCEP server for enrollment. |
| batch | ✓ Stable | Run commands from script file |
| shell | ✓ Stable | Interactive REPL |
| completions, manpages | ✓ Stable | Bash/Zsh/Fish completions, man page generation |
Note: convert is format conversion (PEM ↔ DER ↔ Base64), not algorithm conversion.
To migrate from RSA to PQC, use key gen → csr create → pki build.