关于 ssl-inspector
ssl-inspector 是用于检查 TLS 证书和域名安全设置的 MCP 服务及命令行工具,可检查证书、协议、密码套件和 HSTS,也支持扫描多个域名。
主要功能
- 01检查证书有效性及详细信息
- 02检查 TLS 协议和密码套件
- 03检查 HSTS 配置
- 04并行扫描多个域名
- 05检查证书到期时间
适用场景
- 01检查域名的 TLS 配置
- 02核查多个域名的证书
- 03监控即将到期的证书
- 04在部署后运行 TLS 检查
MCP 相关
提供完整 TLS 检查、批量域名扫描、证书到期检查及详细证书信息查询工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| host | string | 是 | 要检查的域名或 IP(例如 example.com) |
| port | number | 否 | 要连接的端口(默认:443) |
| checkHsts | boolean | 否 | 同时通过 HTTP HEAD 检查 HSTS 标头(默认:true) |
详细介绍
@guardbee/mcp-ssl-inspector
🇬🇧 English | 🇹🇷 Türkçe | 🇨🇳 中文 | 🇯🇵 日本語 | 🇰🇷 한국어 | 🇧🇷 Português | 🇪🇸 Español | 🇩🇪 Deutsch
一个 MCP 服务,可检查任意域名的 TLS 证书、密码套件和协议配置。使用 Node.js 内置的 tls 模块,无需外部依赖。
遥测默认关闭。设置
GUARDBEE_TELEMETRY=1后,它会发送服务、工具、成功状态、耗时以及文件路径等简短参数值;较长的字符串以及content、token或password等字段会替换为占位符。参见@guardbee/mcp-telemetry。
功能
- 证书检查 — 有效性、距离到期的天数、SHA-256 指纹、SAN、颁发者链
- 协议检查 — TLS 1.0/1.1 弃用警告、SSLv2/v3 严重警告
- 密码套件分析 — 检测 NULL、EXPORT、RC4、DES、3DES、匿名密码套件
- HSTS 检查 —
Strict-Transport-Security标头、max-age、includeSubdomains - 批量扫描 — 并行扫描 N 个域名
- 证书到期监控 — 对即将到期的证书显示 🚨 / ⚠️ / ✅ 图标
- 12 项单元测试 — 纯逻辑测试,无需网络连接
快速开始
npm install -g @guardbee/mcp-ssl-inspector
添加到 claude_desktop_config.json:
{
"mcpServers": {
"guardbee-ssl-inspector": {
"command": "npx",
"args": ["-y", "@guardbee/mcp-ssl-inspector"]
}
}
}
MCP 工具
| 工具 | 描述 |
|---|---|
inspect_ssl | 对单个域名进行完整的 TLS 检查(证书 + 密码套件 + 协议 + HSTS) |
inspect_ssl_bulk | 并行检查多个域名 |
check_cert_expiry | 检查 N 个域名的证书到期日期 |
get_cert_info | 获取域名的详细证书信息(指纹、SAN、证书链、序列号) |
用法示例
你可以询问 Claude:
“example.com 的 SSL 证书有效吗?”
“这些域名的证书何时到期:example.com、api.example.com、shop.example.com”
“example.com 是否在使用弱密码套件?”
输出示例
┌─ example.com:443
│ Protocol : TLSv1.3
│ Cipher : TLS_AES_256_GCM_SHA384 (256 bit)
│ Chain : depth=2 valid=yes
│ Cert CN : example.com
│ Validity : Mar 15 2024 → Jun 13 2024 (expires in 45 days)
│ SANs : example.com, www.example.com
│ Issuer : Let's Encrypt
│ SHA-256 : AA:BB:CC:DD:...
│ HSTS : enabled (max-age=31536000, includeSubdomains)
│ ✅ No security issues found
安全发现
| 发现项 | 严重性 | 描述 |
|---|---|---|
CERT_EXPIRED | 🔴 严重 | 证书已过期 |
CERT_EXPIRY_CRITICAL | 🔴 严重 | 剩余时间不足 7 天 |
CERT_EXPIRY_SOON | 🟠 高 | 剩余时间不足 21 天(ACME 客户端会在剩余 30 天时续期:续期失败) |
CERT_EXPIRY_WARN | 🟡 中 | 剩余时间不足 30 天 |
HOSTNAME_MISMATCH | 🔴 严重 | 证书对该主机无效 |
CERT_REVOKED | 🔴 严重 | 证书已被吊销 |
CERT_SELF_SIGNED | 🟠 高 | 自签名证书 |
CERT_CHAIN_INCOMPLETE | 🟠 高 | 服务端未发送中间证书 |
CERT_CHAIN_INVALID | 🟠 高 | 其他证书链验证错误 |
WEAK_KEY | 🟠 高 / 🔴 严重 | RSA 密钥低于 2048 位(低于 1024 位则为严重),EC 密钥低于 256 位 |
WEAK_SIGNATURE | 🟠 高 | 叶证书或中间证书使用 SHA-1 或 MD5 签名 |
CERT_NO_SAN | 🟡 中 | 无主题备用名称 |
DEPRECATED_PROTOCOL | 🟠 高 | 服务端仍接受 TLS 1.0 或 1.1(探测) |
OBSOLETE_PROTOCOL | 🔴 严重 | SSLv2 或 SSLv3 |
WEAK_CIPHER | 🔴 严重 / 🟠 高 | 接受 NULL/EXPORT/RC4(严重)或 3DES(高)密码套件(探测) |
WEAK_DH | 🟠 高 / 🔴 严重 | Diffie-Hellman 组低于 2048 位(低于 1024 位则为严重)(探测) |
NO_FORWARD_SECRECY | 🟡 中 | 接受 RSA 密钥交换密码套件(探测) |
NO_HSTS | 🟡 中 | 未找到 HSTS 标头 |
HSTS_SHORT_MAX_AGE | 🔵 低 | max-age < 15552000s |
NO_TLS13 | 🔵 低 | 不支持 TLS 1.3(探测) |
NO_OCSP_STAPLING | 🔵 低 | 未提供 OCSP 装订响应 |
NO_CAA | 🔵 低 | 域名或其父域名没有 CAA DNS 记录 |
探测。 默认握手会采用双方共同支持的最佳协议和密码套件,因此同时接受 TLS 1.0 或 RSA 密钥交换的服务端看起来也会一切正常。为此,inspect_ssl 和 CLI 会额外执行几次握手,每次仅提供待测试的项目(TLS 1.0、TLS 1.1、TLS 1.3、RSA 密钥交换、DHE、弱密码套件系列)。如果运行时自带的 OpenSSL 无法提供某些弱密码套件系列(Node 22 构建不包含 3DES/RC4/EXPORT),则会标记为未测试,而非通过。--no-probes / probes: false 可跳过这些探测;inspect_ssl_bulk 默认不启用这些探测,除非明确要求。
CLI — CI/CD 集成
除了 MCP 服务模式外,也可以直接将其用作 CLI:
# Full TLS inspection for a single domain
npx @guardbee/mcp-ssl-inspector inspect example.com
# Multiple domains
npx @guardbee/mcp-ssl-inspector inspect example.com api.example.com shop.example.com
# Custom port
npx @guardbee/mcp-ssl-inspector inspect example.com:8443
# Certificate expiry check
npx @guardbee/mcp-ssl-inspector expiry example.com api.example.com
# Fail only on critical
npx @guardbee/mcp-ssl-inspector inspect example.com --fail-on=critical
# JSON output
npx @guardbee/mcp-ssl-inspector inspect example.com --format=json
退出代码: 0 = 无问题 · 1 = 发现的问题超过阈值 / 证书已过期 · 2 = 错误
通过 guardbee.yml 配置
在项目根目录创建 guardbee.yml,以保留 CLI 标志设置。CLI 标志始终优先于文件设置。
ssl-inspector:
fail-on: high # critical | high | medium | low
port: 443
hosts: # used when no domain is given on the CLI
- example.com
- api.example.com
- shop.example.com
示例文件请参见 guardbee.example.yml。
GitHub Actions — 部署后检查
name: SSL Check
on:
workflow_run:
workflows: ["Deploy"]
types: [completed]
jobs:
ssl-check:
runs-on: ubuntu-latest
steps:
- name: Inspect SSL certificate
run: npx @guardbee/mcp-ssl-inspector inspect ${{ vars.DOMAIN }} --fail-on=high
- name: Check cert expiry (warn if < 30 days)
run: npx @guardbee/mcp-ssl-inspector expiry ${{ vars.DOMAIN }}
定期过期监控
name: Cert Expiry Monitor
on:
schedule:
- cron: "0 9 * * 1" # Every Monday at 09:00
jobs:
expiry:
runs-on: ubuntu-latest
steps:
- name: Check certificate expiry dates
run: |
npx @guardbee/mcp-ssl-inspector expiry \
example.com \
api.example.com \
shop.example.com \
--format=json
GitLab CI
ssl-inspect:
image: node:20
script:
- npx @guardbee/mcp-ssl-inspector inspect $DOMAIN --fail-on=high
environment:
name: production
only:
- main
开发
npm install
npm test # 12 unit tests
npm run build # TypeScript compile
许可证
MIT — GuardBee
反馈
有问题、想法或发现误报?请在 GitHub Discussions 中发起讨论,或提交问题。如果 GuardBee 对你有帮助,可以在项目仓库点个 ⭐,帮助其他人发现它。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。