Certificate inspection, key management, TLS probing, and enrollment protocols — 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.
ACME (Let's Encrypt), EST (RFC 7030), and SCEP (RFC 8894) built in. No external tools needed.
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.
From inspection to enrollment, every PKI operation in one tool.
| 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) and inspection |
| chain | Certificate chain building and verification |
| csr | CSR creation and inspection |
| 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 |
| 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 |
Every command supports four output modes via --format.
One 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, 20 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 | External — CA crypto engine (git dependency) |
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 keygen not yet supported. |
| 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 | 20 subcommands. 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.