sslx:OpenSSL 命令行工具的快速现代替代方案
摘要
sslx 是一个快速、现代的单二进制命令行工具,作为 OpenSSL 的替代方案,使用 Rust 和 rustls 构建。它支持证书检查、TLS 评级、过期检测、证书生成、CSR 创建以及格式转换,无需依赖系统 OpenSSL。
查看缓存全文
缓存时间: 2026/10/15 14:22
glincker/sslx 来源:https://github.com/glincker/sslx
sslx
openssl,但你不需要去 Google 搜索那些参数了。
一个单一二进制文件,处理证书、TLS 连接以及所有你通常需要三次不同 openssl 调用才能完成的事情。使用 Rust 和 rustls (https://github.com/rustls/rustls) 构建,无需系统安装 OpenSSL。
crates.io | CI | License | Discord
sslx 演示
安装
cargo install sslx
预编译二进制文件见 releases 页面。
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 评级
为任意主机的 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... │
╰────────────────────────────────────────────────────────╯
同时支持多证书 bundle 文件。自动识别 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) ────────────────────╮
│ ... │
╰──────────────────────────────────────────────╯
生成证书
一条命令生成本地开发用的自签名证书:
sslx generate --cn localhost --san "*.local,127.0.0.1"
默认使用 EC P-256 创建 cert.pem 和 key.pem。同时支持 ec384 和 ed25519。
生成 CSR
sslx csr --cn example.com --san "*.example.com,api.example.com"
创建 csr.pem 和 key.pem。将 CSR 提交给你的 CA 即可。
格式转换
sslx convert cert.pem --to der # PEM 转 DER
sslx convert cert.der --to pem # DER 转 PEM
sslx convert bundle.p12 --to pem # PKCS12 转 PEM
自动识别输入格式。
检查证书与密钥是否匹配
$ sslx match cert.pem key.pem
✓ Certificate and key match (ECDSA P-256 (256 bit))
不用再手动对比 modulus 哈希值了。
从 PKCS12 提取
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
验证失败时会精确告诉你问题所在,并给出修复建议。
openssl 对比 sslx
| 你想要做的事 | 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 评级 | (去 ssllabs.com) | sslx grade host |
| 解码 JWT | (去 jwt.io) | sslx decode |
JSON 输出
所有命令都支持 --json 参数,方便编写脚本和 CI 集成:
# 查询距离证书过期还有多少天
sslx connect example.com --json | jq '.chain.certificates[0].days_remaining'
# 获取评级
sslx grade example.com --json | jq '.grade'
# 列出所有 SAN
sslx inspect cert.pem --json | jq '.certificates[0].sans'
退出码
| 码 | 含义 |
|---|---|
| 0 | 正常 |
| 1 | 证书已过期或即将过期 |
| 3 | 证书链不受信任 |
| 4 | 连接失败 |
| 5 | 文件无效 |
性能基准
macOS M2 上 10 次运行的中位数:
| sslx | openssl | |
|---|---|---|
| 查看证书 | 2.1ms | 9.4ms |
| 生成证书 | 1.7ms | 4.5ms |
| 启动时间 | 1.3ms |
Shell 补全
sslx completions bash > /etc/bash_completion.d/sslx
sslx completions zsh > ~/.zsh/completions/_sslx
sslx completions fish > ~/.config/fish/completions/sslx.fish
社区
加入 GLINR Discord,提问、反馈或与其他用户交流。本项目有专属频道 #sslx。
贡献
请参阅 CONTRIBUTING.md。Bug 和功能请求请提交至 issues。
许可证
MIT
相似文章
Show HN:18KB 的 ls 替代工具,基于 no_std Rust 和 Libc
一个仅 18KB 的极简 ls 命令替代工具,使用 Rust 编写,基于 no_std 和 Libc。
XTLS/Xray-core
# XTLS/Xray-core 源码:[https://github.com/XTLS/Xray-core](https://github.com/XTLS/Xray-core) ## Project X [Project X](https://github.com/XTLS) 源于 XTLS 协议,提供 [Xray-core](https://github.com/XTLS/Xray-core) 和 [REALITY](https://github.com/XTLS/REALITY) 等网络工具套件。[README](https://github.com/XTLS/Xray-core#readme) 公开,欢迎在此提交您的项目[PR](https://github.com/XTLS/Xray-core/pulls)。 ## 赞助商 [![Remnawave](https://github.co
OxiSH:用 Rust 编写的 SSH 服务器
OxiSH 是一个用 Rust 编写的 SSH 服务器,为传统 SSH 服务器实现提供了一种内存安全的替代方案。
Show HN: Rscrypto,纯 Rust 加密库,拥有业界领先的公开基准测试
rscrypto 是一个纯 Rust 加密库,提供 RSA、Ed25519、X25519、AEAD、哈希、KDF 等功能,注重可移植性、no_std 支持以及业界领先的基准测试。
yserver: 一个用Rust从头编写的现代X11服务器
yserver是一个用Rust从头编写的现代X11服务器,能够运行MATE、XFCE和Cinnamon等完整的桌面环境,同时去掉了遗留的负担。它支持多种X扩展,并已在多种硬件上测试过。