sslx:OpenSSL 命令行工具的快速现代替代方案

Lobsters Hottest 工具

摘要

sslx 是一个快速、现代的单二进制命令行工具,作为 OpenSSL 的替代方案,使用 Rust 和 rustls 构建。它支持证书检查、TLS 评级、过期检测、证书生成、CSR 创建以及格式转换,无需依赖系统 OpenSSL。

<p><a href="https://lobste.rs/s/p7tf7i/sslx_fast_modern_alternative_openssl_s">评论</a></p>
查看原文
查看缓存全文

缓存时间: 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

你想要做的事opensslsslx
查看证书openssl x509 -in cert.pem -text -nooutsslx inspect cert.pem
TLS 握手openssl s_client -connect host:443 2>/dev/null | openssl x509 -textsslx connect host
验证证书链openssl verify -CAfile ca.pem cert.pemsslx 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
创建 CSRopenssl 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 转 DERopenssl x509 -in cert.pem -outform DER -out cert.dersslx convert cert.pem --to der
检查过期时间echo | openssl s_client -connect host:443 2>/dev/null | openssl x509 -noout -enddatesslx 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 次运行的中位数:

sslxopenssl
查看证书2.1ms9.4ms
生成证书1.7ms4.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

相似文章

XTLS/Xray-core

GitHub Trending (daily)

# 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

yserver: 一个用Rust从头编写的现代X11服务器

Lobsters Hottest

yserver是一个用Rust从头编写的现代X11服务器,能够运行MATE、XFCE和Cinnamon等完整的桌面环境,同时去掉了遗留的负担。它支持多种X扩展,并已在多种硬件上测试过。