
Une alternative rapide et moderne à l'interface en ligne de commande d'OpenSSL - inspectez, évaluez et gérez les certificats depuis le terminal.
openssl, mais sans avoir à chercher les flags sur Google.
Un binaire unique qui gère les certificats, les connexions TLS et tout ce pour quoi vous auriez normalement besoin de trois invocations openssl différentes. Construit avec Rust et rustls, pas besoin d'OpenSSL système.

cargo install sslx
Binaires précompilés sur la page des releases.
Homebrew :
brew install glincker/tap/sslx
Ou téléchargez directement :
# 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
Évaluez la configuration TLS de n'importe quel hôte, comme SSL Labs mais depuis votre terminal :
$ 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
Vérifie la version du protocole, la robustesse du chiffrement, la validité du certificat, le type de clé, la correspondance du nom d'hôte, la complétude de la chaîne et ALPN. Vous donne une note de A+ à F.
Vérifiez l'expiration des certificats sur plusieurs hôtes à la fois :
$ 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
Code de sortie 1 si quelque chose expire dans les 7 jours. Utile dans les tâches cron ou les pipelines CI.
Lisez un fichier de certificat PEM ou DER avec une sortie colorée :
$ 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... │
╰──────────────────────────────────────────────────────────╯
Gère également les bundles multi-certificats. Détection automatique PEM vs DER.
Voir les détails complets de la poignée de main TLS et la chaîne de certificats pour n'importe quel hôte :
$ 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) ────────────────────╮
│ ... │
╰────────────────────────────────────────────────╯
Certificat auto-signé pour le développement local en une commande :
sslx generate --cn localhost --san "*.local,127.0.0.1"
Crée cert.pem et key.pem avec EC P-256 par défaut. Prend également en charge ec384 et ed25519.
sslx csr --cn example.com --san "*.example.com,api.example.com"
Crée csr.pem et key.pem. Soumettez la CSR à votre autorité de certification.
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
Détection automatique du format d'entrée.
$ sslx match cert.pem key.pem
✓ Certificate and key match (ECDSA P-256 (256 bit))
Fini de comparer manuellement les hachages de modulus.
sslx extract bundle.p12 --password mypass --out ./certs
Extrait le certificat feuille, les intermédiaires et la clé dans des fichiers PEM séparés.
Donnez-lui un fichier ou un jeton JWT et sslx détermine ce que c'est :
$ sslx decode eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
✓ Detected: JSON Web Token (JWT)
Header: {"alg":"HS256","typ":"JWT"}
Payload: {"sub":"1234567890","name":"John","iat":1516239022}
Expires: in 3 hours
Détecte également les certificats PEM, les fichiers DER, les clés privées, les clés publiques et les CSR.
sslx verify cert.pem --ca ca-bundle.pem
✓ Certificate is valid
Chain: complete (3 certs)
Expiry: 328 days remaining
Vous dit exactement ce qui ne va pas en cas d'échec, avec des conseils pour le corriger.
Chaque commande prend en charge --json pour les scripts et CI :
# 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'
| Code | Signification |
|---|---|
| 0 | ok |
| 1 | certificat expiré ou sur le point d'expirer |
| 3 | chaîne non fiable |
| 4 | connexion échouée |
Médiane de 10 exécutions sur macOS M2 :
| sslx | openssl | |
|---|---|---|
| inspecter certificat | 2.1ms | 9.4ms |
| générer certificat | 1.7ms | 4.5ms |
| démarrage | 1.3ms |
sslx completions bash > /etc/bash_completion.d/sslx
sslx completions zsh > ~/.zsh/completions/_sslx
sslx completions fish > ~/.config/fish/completions/sslx.fish
Voir CONTRIBUTING.md. Les bugs et demandes de fonctionnalités se font dans les issues.
MIT
| Ce que vous faites | openssl | sslx |
|---|
| Consulter un certificat | openssl x509 -in cert.pem -text -noout | sslx inspect cert.pem |
| Poignée de main TLS | openssl s_client -connect host:443 2>/dev/null | openssl x509 -text | sslx connect host |
| Vérifier une chaîne | openssl verify -CAfile ca.pem cert.pem | sslx verify cert.pem --ca ca.pem |
| Certificat auto-signé | 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 |
| Créer une 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 vers DER | openssl x509 -in cert.pem -outform DER -out cert.der | sslx convert cert.pem --to der |
| Vérifier l'expiration | echo | openssl s_client -connect host:443 2>/dev/null | openssl x509 -noout -enddate | sslx expiry host |
| Correspondance cert+clé | diff <(openssl x509 -noout -modulus -in cert.pem) <(openssl rsa -noout -modulus -in key.pem) | sslx match cert.pem key.pem |
| Note TLS | (allez sur ssllabs.com) | sslx grade host |
| Décoder un JWT | (allez sur jwt.io) | sslx decode <token> |
| 5 | fichier invalide |