mcpField
S
ssl-inspector

ssl-inspector

本地服务
github.com/GuardBee安全11 天前更新

关于 ssl-inspector

ssl-inspector 是用于检查 TLS 证书和域名安全设置的 MCP 服务及命令行工具,可检查证书、协议、密码套件和 HSTS,也支持扫描多个域名。

主要功能

  1. 01检查证书有效性及详细信息
  2. 02检查 TLS 协议和密码套件
  3. 03检查 HSTS 配置
  4. 04并行扫描多个域名
  5. 05检查证书到期时间

适用场景

  1. 01检查域名的 TLS 配置
  2. 02核查多个域名的证书
  3. 03监控即将到期的证书
  4. 04在部署后运行 TLS 检查

MCP 相关

提供完整 TLS 检查、批量域名扫描、证书到期检查及详细证书信息查询工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"4hmetuyar-ssl-inspector": {
"command": "npx",
"args": [
"-y",
"@guardbee/mcp-ssl-inspector"
]
}
}
}
启动命令npx -y @guardbee/mcp-ssl-inspector

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@guardbee/mcp-ssl-inspector0.2.3

工具

4

收录的工具列表 · 更新于 2 周前

参数类型必填说明
hoststring是要检查的域名或 IP(例如 example.com)
portnumber否要连接的端口(默认:443)
checkHstsboolean否同时通过 HTTP HEAD 检查 HSTS 标头(默认:true)

详细介绍

@guardbee/mcp-ssl-inspector

🇬🇧 English | 🇹🇷 Türkçe | 🇨🇳 中文 | 🇯🇵 日本語 | 🇰🇷 한국어 | 🇧🇷 Português | 🇪🇸 Español | 🇩🇪 Deutsch

npm version npm downloads License: MIT

一个 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 对你有帮助,可以在项目仓库点个 ⭐,帮助其他人发现它。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。