
OpenSSLのCLIに代わる高速でモダンなツール - ターミナルから証明書の検査、評価、管理が可能
openssl だけど、フラグをググる必要はない。
証明書やTLS接続、通常3つの異なるopenssl呼び出しが必要なすべてのことを処理する単一のバイナリ。Rustとrustlsで構築されており、システムのOpenSSLは不要です。

cargo install sslx
ビルド済みバイナリはリリースページにあります。
Homebrew:
brew install glincker/tap/sslx
または直接ダウンロード:
# macOS (Apple Silicon)
curl -fsSL https://github.com/glincker/sslx/releases/latest/download/sslx-macos-aarch64 -o sslx && chmod +x sslx
# Linux
curl -fsSL https://github.com/glincker/sslx/releases/latest/download/sslx-linux-x86_64 -o sslx && chmod +x sslx
任意のホストのTLS設定を評価します。SSL Labs のように、ターミナルから:
$ sslx grade github.com
╭──────────────────────────────────────────╮
│ github.com:443 Grade: A+ │
╰──────────────────────────────────────────╯
✓ Protocol TLS 1.3
✓ Cipher TLS13_AES_128_GCM_SHA256 (AEAD)
✓ Certificate Valid, 49 days remaining
✓ Key ECDSA P-256 (256 bit)
✓ Hostname github.com in SANs
✓ Chain Complete (3 certs)
✓ ALPN HTTP/2 supported
プロトコルバージョン、暗号強度、証明書の有効性、鍵の種類、ホスト名の一致、チェインの完全性、ALPNをチェックします。A+からFまでのレターグレードを与えます。
複数のホストの証明書の有効期限を一度に確認:
$ sslx expiry google.com github.com cloudflare.com stripe.com
Host Expires Days Status
────────────────────────────────────────────────────────────────
✓ google.com:443 2026-06-15 61 OK
✓ github.com:443 2026-06-03 49 OK
✓ cloudflare.com:443 2026-06-10 56 OK
✓ stripe.com:443 2026-09-01 139 OK
7日以内に期限切れになるものがあれば終了コード1。cronジョブやCIパイプラインで便利です。
色付き出力でPEMまたはDER証明書ファイルを読み取ります:
$ sslx inspect cert.pem
╭─ Certificate 1 of 1 ──────────────────────────────────╮
│ Subject: CN=*.example.com │
│ Issuer: CN=Let's Encrypt Authority X3 │
│ Serial: 0A:1B:2C:3D... │
│ │
│ Valid: 2026-01-15 → 2026-04-15 │
│ Expires: ██░░░░░░░░ 12 days remaining [!] │
│ │
│ Key: ECDSA P-256 (256 bit) │
│ SANs: *.example.com, example.com │
│ SHA-256: AB:CD:EF:12:34... │
╰──────────────────────────────────────────────────────────╯
マルチ証明書バンドルも処理します。PEMとDERを自動検出します。
任意のホストの完全なTLSハンドシェイクの詳細と証明書チェインを表示:
$ sslx connect example.com
Connection to example.com:443
TLS 1.3 · TLS13_AES_256_GCM_SHA384
ALPN: h2
Chain:
╭─ Certificate 1 of 3 ─────────────────────────╮
│ Subject: CN=*.example.com │
│ Valid: 61 days remaining ✓ │
│ Key: ECDSA P-256 (256 bit) │
╰────────────────────────────────────────────────╯
↓ signed by
╭─ Certificate 2 of 3 (CA) ────────────────────╮
│ ... │
╰────────────────────────────────────────────────╯
ローカル開発用の自己署名証明書を1つのコマンドで:
sslx generate --cn localhost --san "*.local,127.0.0.1"
デフォルトでEC P-256のcert.pemとkey.pemを作成します。ec384とed25519もサポートします。
sslx csr --cn example.com --san "*.example.com,api.example.com"
csr.pemとkey.pemを作成します。CSRをCAに提出してください。
sslx convert cert.pem --to der # PEM to DER
sslx convert cert.der --to pem # DER to PEM
sslx convert bundle.p12 --to pem # PKCS12 to PEM
入力形式を自動検出します。
$ sslx match cert.pem key.pem
✓ Certificate and key match (ECDSA P-256 (256 bit))
もう手動でモジュラスハッシュを比較する必要はありません。
sslx extract bundle.p12 --password mypass --out ./certs
リーフ証明書、中間証明書、鍵を別々のPEMファイルに取り出します。
ファイルまたはJWTトークンを渡すと、sslxがそれが何かを解析します:
$ sslx decode eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
✓ Detected: JSON Web Token (JWT)
Header: {"alg":"HS256","typ":"JWT"}
Payload: {"sub":"1234567890","name":"John","iat":1516239022}
Expires: in 3 hours
PEM証明書、DERファイル、秘密鍵、公開鍵、CSRも検出します。
sslx verify cert.pem --ca ca-bundle.pem
✓ Certificate is valid
Chain: complete (3 certs)
Expiry: 328 days remaining
失敗した場合、何が問題かを正確に伝え、修正方法のヒントも提供します。
すべてのコマンドはスクリプトとCI用に--jsonをサポートしています:
# check days until expiry
sslx connect example.com --json | jq '.chain.certificates[0].days_remaining'
# get the grade
sslx grade example.com --json | jq '.grade'
# list all SANs
sslx inspect cert.pem --json | jq '.certificates[0].sans'
| コード | 意味 |
|---|---|
| 0 | OK |
| 1 | 証明書の期限切れまたは期限切れ間近 |
| 3 | チェインが信頼されていない |
| 4 | 接続失敗 |
| 5 | ファイルが不正 |
macOS M2での10回実行の中央値:
| sslx | openssl | |
|---|---|---|
| 証明書の表示 | 2.1ms | 9.4ms |
| 証明書の生成 | 1.7ms | 4.5ms |
| 起動 | 1.3ms |
sslx completions bash > /etc/bash_completion.d/sslx
sslx completions zsh > ~/.zsh/completions/_sslx
sslx completions fish > ~/.config/fish/completions/sslx.fish
詳細はCONTRIBUTING.mdを参照してください。バグや機能リクエストはissuesへお願いします。
MIT
| 操作内容 | openssl | sslx |
|---|
| 証明書を表示 | openssl x509 -in cert.pem -text -noout | sslx inspect cert.pem |
| TLSハンドシェイク | openssl s_client -connect host:443 2>/dev/null | openssl x509 -text | sslx connect host |
| チェインの検証 | openssl verify -CAfile ca.pem cert.pem | sslx verify cert.pem --ca ca.pem |
| 自己署名証明書の作成 | openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:P-256 -keyout key.pem -out cert.pem -days 365 -nodes -batch -subj "/CN=localhost" | sslx generate --cn localhost |
| CSRの作成 | openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 -keyout key.pem -out csr.pem -batch -subj "/CN=example.com" | sslx csr --cn example.com |
| PEMからDERへ変換 | openssl x509 -in cert.pem -outform DER -out cert.der | sslx convert cert.pem --to der |
| 有効期限の確認 | echo | openssl s_client -connect host:443 2>/dev/null | openssl x509 -noout -enddate | sslx expiry host |
| 証明書と鍵の一致確認 | diff <(openssl x509 -noout -modulus -in cert.pem) <(openssl rsa -noout -modulus -in key.pem) | sslx match cert.pem key.pem |
| TLSグレード | (go to ssllabs.com) | sslx grade host |
| JWTのデコード | (go to jwt.io) | sslx decode <token> |