Skip to content
~/projects/sslknife

sslknife

The swiss knife for TLS, X.509, PKI and SSH. Inspect, lint, convert, scan and run a private CA. A single static binary, no OpenSSL.

ver v0.3.0 lang Go lic MIT macOSLinuxWindows
quickstart — zsh
brew install matusso/tap/sslknife
sslknife cert inspect github.com:443
sslknife cert expires cert.pem --check 30d
sslknife convert keystore.jks --to pkcs12
sslknife tls scan example.com

sslknife is built for hackers, nerds, developers and system engineers who live in a terminal. One tool replaces the openssl incantations you keep looking up, the keytool you never remember, and the scripts that check whether a certificate is about to expire.

Inspect anythingFiles, bundles, keystores or a live host:port. See what a server actually presents.
Private CARoot, intermediate and leaf certificates in three commands, stored in your vault.
Convert without keytoolPEM, DER, PKCS#12 and Java JKS, from any format to any other.
TLS scannerProtocols, ciphers, chain and findings for any endpoint.
CT watchAlerts on unexpected certificate issuance for your domains via Certificate Transparency.
Encrypted vault + web UIA local encrypted inventory with Touch ID unlock on macOS and an optional web dashboard.

Install

Works on macOS and Linux:

brew install matusso/tap/sslknife
brew upgrade sslknife        # later, to get the newest release

Downloads

Release archives come with SBOMs and a Sigstore-signed checksum file.

release v0.3.0 · verify with checksums.txt · all releases →

Usage

Working with files and remote hosts needs no setup:

sslknife cert inspect fullchain.pem            # what is in this file?
sslknife cert inspect github.com:443           # what does this server present?
sslknife cert expires cert.pem --check 30d     # exit 5 if it expires within 30 days
sslknife tls scan example.com                  # protocols, ciphers, chain, findings
sslknife convert keystore.jks --to pkcs12      # any format to any other
sslknife ssh inspect ~/.ssh/id_ed25519.pub

Keep certificates in an encrypted vault

sslknife init                                  # asks for a vault password
sslknife init --touch-id                       # macOS: unlock with Touch ID or Apple Watch
sslknife cert import fullchain.pem --name api-prod --tag production
sslknife cert expiring --within 90d
sslknife ct watch '*.example.com'              # alert on unexpected issuance

Run a small private CA

sslknife cert create --type root-ca --cn "Example Root CA" --store --name root
sslknife cert create --type intermediate-ca --cn "Example Issuing CA" --ca root --store --name issuing
sslknife cert create --cn api.example.com --ca issuing --validity 90d

Web UI

sslknife server                                # prints https://127.0.0.1:8443/?token=…

Every command has examples in --help. Add --json or --yaml for scripting.