cyberspacesec/certificate-skills

GitHub: cyberspacesec/certificate-skills

一款 AI 原生的 SSL/TLS 证书安全工具包,提供 Skills、CLI、MCP Server 与 Go SDK 四维接入方式,服务于证书情报、安全审计与网络空间测绘。

Stars: 0 | Forks: 0

# cert-skills 🔒 **AI 原生证书安全工具包 — Skills · CLI · MCP · Go SDK** 一个专为 AI agent、安全研究人员和网络空间测绘设计的综合 SSL/TLS 证书安全工具包。四种接入方式:**Skills**(45 个可执行提示词)、**CLI**(51 个命令)、**MCP Server**(54 个工具)、**Go SDK**(50+ 个函数)。 [![Go 版本](https://img.shields.io/badge/Go-1.25+-00ADD8?style=flat&logo=go)](https://golang.org) [![许可证](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![MCP](https://img.shields.io/badge/MCP-Server-green.svg)](https://modelcontextprotocol.io) [![发布](https://img.shields.io/github/v/release/cyberspacesec/certificate-skills?include_prereleases)](https://github.com/cyberspacesec/certificate-skills/releases/latest) **English** | [简体中文](#-简体中文) ## 🤖 AI 集成 — 一键设置 ### Skills 集成(推荐 AI Agent 使用) **45 个可执行提示词技能** — 复制到你的项目中,你的 AI agent 就会自动知道何时以及如何使用每个工具。 ``` # 一键安装 — 将全部 45 个 skills 复制到您的项目中 git clone https://github.com/cyberspacesec/certificate-skills.git cp -r certificate-skills/.claude/skills/ /your/project/.claude/skills/ ``` 每个技能都是一个**可执行提示词**(不仅仅是文档),它会告诉你的 AI agent: - **何时使用** — 激活该技能的触发短语 - **何时不使用** — 避免选错工具的边界 - **操作指令** — 包含 CLI 和 MCP 工具调用的分步工作流 - **反模式** — 需要避免的常见错误 ### MCP Server(适用于 Claude Code) ``` { "mcpServers": { "certificate-skills": { "command": "cert-skills-mcp", "args": [] } } } ``` **最佳体验:Skills + MCP 配合使用。** Skills 提供提示词智能;MCP 提供工具执行。 ### CLI(供人类和 AI Agent 使用) ``` # 首先安装 binary curl -sL https://github.com/cyberspacesec/certificate-skills/releases/latest/download/certificate-skills_0.1.1_linux_x86_64.tar.gz | tar xz && sudo mv cert-skills /usr/local/bin/ cert-skills analyze google.com # Security score (0-100) cert-skills scan-cert-security google.com # 18 cert checks cert-skills scan-vulns google.com # 11 TLS vulnerability scans cert-skills search-ct example.com # CT log search cert-skills jarm suspicious.com -o json # JARM fingerprint (JSON) cert-skills detect-change google.com --save # Certificate change detection cert-skills map-scan --hosts example.com -o json # Batch mapping scan ``` ### Go SDK(供编程使用) ``` import pkg "github.com/cyberspacesec/certificate-skills/pkg" result, err := pkg.AnalyzeSecurity("google.com") // Online keyUsage := pkg.CheckKeyUsageFromCert(cert) // Offline (no network) distrusted := pkg.CheckDistrustedCAFromCert(chain) // Offline ``` ## ✨ 功能 ### 🔍 证书情报 证书信息、解析、下载、对比、指纹(SHA-256/SHA-1/MD5/SPKI)、批量分析 ### 🛡️ 安全分析 | 检查项 | 数量 | 详情 | |-------|-------|---------| | 证书安全检查 | 18 | 弱签名、短密钥、主机名不匹配、不受信任的 CA、OCSP Must-Staple、密钥用法、序列号熵、名称约束... | | TLS 漏洞扫描 | 11 | Heartbleed、POODLE、ROBOT、CCS、FREAK、Logjam、Sweet32、BEAST、CRIME、DROWN、Renegotiation | | 安全评分 | 1 | 0-100 分,分为严重/高/中/良好等级 | ### 🔐 PKI 操作 证书生成(RSA/ECDSA/Ed25519)、CSR 生成、证书-密钥验证、链验证 ### 🌐 网络空间测绘 CT 日志搜索、子域名枚举、JARM/JA3 指纹、EV 证书检测、HSTS、CAA、SCT、通配符分析、可信域名提取、PFS、会话恢复、过期监控、吊销检查 批量证书采集、离线证书解析、去重、聚类、拓扑和生命周期时间轴生成 ## 📦 安装 ### 预构建二进制文件(推荐) 从 [GitHub Releases](https://github.com/cyberspacesec/certificate-skills/releases/latest) 下载: ``` # Linux x86_64 curl -sL https://github.com/cyberspacesec/certificate-skills/releases/latest/download/certificate-skills_0.1.1_linux_x86_64.tar.gz | tar xz && sudo mv cert-skills /usr/local/bin/ # Linux ARM64 (AWS Graviton, Raspberry Pi 5) curl -sL https://github.com/cyberspacesec/certificate-skills/releases/latest/download/certificate-skills_0.1.1_linux_aarch64.tar.gz | tar xz && sudo mv cert-skills /usr/local/bin/ # macOS Apple Silicon curl -sL https://github.com/cyberspacesec/certificate-skills/releases/latest/download/certificate-skills_0.1.1_darwin_aarch64.tar.gz | tar xz && sudo mv cert-skills /usr/local/bin/ # macOS Intel curl -sL https://github.com/cyberspacesec/certificate-skills/releases/latest/download/certificate-skills_0.1.1_darwin_x86_64.tar.gz | tar xz && sudo mv cert-skills /usr/local/bin/ # Windows (PowerShell) Invoke-WebRequest -Uri "https://github.com/cyberspacesec/certificate-skills/releases/latest/download/certificate-skills_0.1.1_windows_x86_64.zip" -OutFile "cert-skills.zip"; Expand-Archive cert-skills.zip ``` **提供 9 种平台版本:** Linux(x86_64、ARM64、ARM v7、i386),macOS(Apple Silicon、Intel),Windows(x86_64、i386),FreeBSD(x86_64) 每个平台包含两个二进制文件:**`cert-skills`**(CLI)和 **`cert-skills-mcp`**(MCP 服务器)。 ### 从源码构建 ``` git clone https://github.com/cyberspacesec/certificate-skills.git cd certificate-skills go build -trimpath -ldflags "-s -w" -o cert-skills ./cmd/ # CLI go build -trimpath -ldflags "-s -w" -o cert-skills-mcp ./cmd/mcp/ # MCP Server ``` ### Go Module ``` go get github.com/cyberspacesec/certificate-skills/pkg ``` ## 🖥️ CLI 参考 ``` # 安全分析 cert-skills analyze # Full security scoring (0-100) cert-skills scan-cert-security # 18 cert security checks cert-skills scan-vulns # 11 TLS vulnerability scans cert-skills scan-protocols # TLS version scan cert-skills scan-ciphers # Cipher suite scan # 证书操作 cert-skills info # Certificate information cert-skills info # Batch info cert-skills fingerprint # SHA-256/SHA-1/MD5/SPKI cert-skills compare -1 -2 # Compare certificates cert-skills download # Download cert chain cert-skills parse # Parse local file cert-skills validate -c -k # Validate cert-key pair # PKI 操作 cert-skills generate -n test.local -k ecdsa # Generate self-signed cert cert-skills generate-csr -n example.com # Generate CSR # 安全检查 cert-skills check-distrusted-ca # Distrusted CA detection cert-skills check-ocsp-must-staple # OCSP Must-Staple cert-skills check-key-usage # Key usage compliance cert-skills check-serial-entropy # Serial entropy cert-skills check-policy # Policy OID analysis cert-skills check-name-constraints # Name constraints cert-skills check-bundle # Bundle completeness cert-skills check-revocation # OCSP/CRL revocation cert-skills check-hsts # HSTS status cert-skills check-caa # CAA records cert-skills check-sct # SCT compliance # 网络空间测绘 cert-skills search-ct # Search CT logs cert-skills ct-enumerate # Enumerate subdomains cert-skills map-scan --hosts a.com,b.com # Batch collect certs cert-skills map-parse certs/*.pem # Offline mapping analysis cert-skills map-timeline snapshots/*.json # Lifecycle timeline cert-skills jarm # JARM fingerprint cert-skills ja3 # JA3 fingerprint cert-skills match-fp # Match known fingerprints cert-skills detect-change --save # Certificate change detection cert-skills detect-ev # EV detection cert-skills check-wildcard # Wildcard analysis cert-skills get-trusted-domains # Extract domains cert-skills verify-hostname # Hostname verification cert-skills verify-chain # Chain verification cert-skills check-pfs # PFS support cert-skills expiry-monitor -t "a.com,b.com" # Expiry monitoring # JSON 输出 (用于 AI agents 和自动化) cert-skills -o json ``` ## 📚 Go SDK ### 在线分析(需要网络) ``` import pkg "github.com/cyberspacesec/certificate-skills/pkg" result, err := pkg.AnalyzeSecurity("google.com") // Security score certResult, err := pkg.ScanCertSecurity("google.com") // 18 cert checks vulnResult, err := pkg.VulnerabilityScan("google.com") // 11 vuln scans distrusted, err := pkg.CheckDistrustedCA("google.com") // Distrusted CA keyUsage, err := pkg.CheckKeyUsageCompliance("google.com") // Key usage entropy, err := pkg.CheckSerialEntropy("google.com") // Serial entropy jarmResult, err := pkg.JARMScan("google.com") // JARM ja3Result, err := pkg.JA3Scan("google.com") // JA3 ctResult, err := pkg.CTSearch("example.com") // CT search changeResult, err := pkg.DetectChange("example.com", prev) // Change detection hstsResult, err := pkg.CheckHSTS("example.com") // HSTS revResult, err := pkg.CheckRevocation("example.com") // Revocation ``` ### 离线分析(无需网络) ``` cert, _ := pkg.GetCertFromFile("cert.pem") keyUsage := pkg.CheckKeyUsageFromCert(cert) // Key usage policy := pkg.CheckPolicyFromCert(cert) // Policy OIDs serial := pkg.AnalyzeSerialNumberFromCert(cert) // Serial entropy security, _ := pkg.ScanCertSecurityFromChain(cert, host, nil) // Cert security distrusted := pkg.CheckDistrustedCAFromCert(chain) // Distrusted CA constraints := pkg.CheckNameConstraintsFromCert(chain) // Name constraints ``` ### 结构化错误处理 ``` import "errors" result, err := pkg.AnalyzeSecurity("unreachable.example.com") if errors.Is(err, pkg.ErrConnectionFailed) { /* connection failure */ } if errors.Is(err, pkg.ErrDNSResolution) { /* DNS failure */ } if errors.Is(err, pkg.ErrCertParseFailed) { /* parse error */ } ``` ## 🔒 安全检查 ### 证书安全(CERT-001 到 CERT-018) | 代码 | 检查项 | 严重程度 | |------|-------|----------| | CERT-001 | 弱签名算法 | 高 | | CERT-002 | RSA 短密钥(<2048) | 高 | | CERT-003 | ECDSA 弱曲线 | 中 | | CERT-004 | 缺少 SAN 扩展 | 高 | | CERT-005 | 主机名不匹配 | 严重 | | CERT-006 | 有效期过长 | 中 | | CERT-007 | 自签名证书 | 中 | | CERT-008 | 证书已过期 | 严重 | | CERT-009 | 证书即将过期 | 高 | | CERT-010 | CN 不在 SANs 中 | 低 | | CERT-011 | 通配符证书风险 | 低 | | CERT-012 | 内部名称 | 高 | | CERT-013 | 不受信任的链 | 高 | | CERT-014 | **不受信任的 CA** | **严重** | | CERT-015 | **OCSP Must-Staple 违规** | **高** | | CERT-016 | **密钥用法不合规** | **高** | | CERT-017 | **序列号熵过低** | **中** | | CERT-018 | **名称约束违规** | **高** | ### TLS 漏洞扫描 | 漏洞 | CVE | |---------------|-----| | Heartbleed | CVE-2014-0160 | | POODLE | CVE-2014-3566 | | ROBOT | CVE-2017-17382 | | CCS 注入 | CVE-2014-0224 | | FREAK | CVE-2015-0204 | | Logjam | CVE-2015-4000 | | Sweet32 | CVE-2016-2183 | | BEAST | CVE-2011-3389 | | CRIME | CVE-2012-4929 | | 不安全的 Renegotiation | CVE-2009-3555 | | DROWN | CVE-2016-0800 | ## 🎯 Skills(45 个可执行提示词) 每个技能都是一个**可执行提示词**,它会告诉你的 AI agent 何时触发、如何使用该工具以及需要避免什么: ``` Frontmatter (name + trigger description + tools/allowed-tools) → When to Use → When NOT to Use → Instructions → Anti-Patterns ``` 仓库布局: - [`skills/`](skills/) 包含可移植的 Anthropic 风格 skill 包(`SKILL.md` 以及可选的 `references/`、`scripts/` 和 `assets/`)。 - 每个 `SKILL.md` 在 frontmatter 之后包含 Markdown 说明,在 fenced code block 外部必须包含一个 H1,并至少包含一个 H2 小节。 - frontmatter 仅使用受支持的 `name`、`description`、工具元数据和可选的 `compatibility` 字段。 - frontmatter 的键在每个 `SKILL.md` 中必须唯一。 - 工具元数据字段必须是非空的 YAML 列表,并使用预期的可移植或 Claude Code 工具名格式。 - 声明的 skill 工具必须在 skill 的 Markdown 说明中被引用。 - Claude Code skill 提示词必须在 fenced code block 外部包含必需的可执行部分。 - frontmatter 描述应保持简洁(不超过 100 词),并包含触发说明。 - 可移植的 skill 将触发说明保留在 frontmatter 描述中,而不是 `When to Use` 正文段落。 - 可移植 skill 的参考链接包含 `Read when` 提示,以便仅在相关时才加载详细材料。 - 超过 300 行的参考文件必须包含 `Contents` 或 `Table of Contents` 标题。 - 捆绑的 `scripts/` 和 `assets/` 文件必须从 `SKILL.md` 中链接;捆绑的脚本必须是可执行的。 - skill 包拒绝不应分发的生成的缓存或备份产物。 - skill 包内容拒绝可能破坏用户系统的高风险 shell 模式。 - 每个可移植 skill 都包含 `evals/evals.json`,其中具有 2-3 个测试提示词,仅使用 skill-creator eval schema 字段和连续的用例 ID。 - skill eval 提示词必须是真实的用户请求,而不是评估器控制指令。 - skill `evals/` 目录仅包含 `evals.json` 和可选的 `files/` fixture。 - skill eval 文件 fixture(如果使用)位于 `evals/files/` 下。 - 每个 `evals/files/` fixture 至少被一个 eval case 引用。 - [`.claude/skills/`](.claude/skills/) 包含适用于 Claude Code 的可执行提示词,带有 MCP `allowed-tools` 元数据。 - [`evals/evals.json`](evals/evals.json) 包含仓库级 skill 选择冒烟 eval。 - [`evals/skills-structure.json`](evals/skills-structure.json) 包含由 `make validate-skills` 使用的仓库结构检查。 - `make validate-skills` 使用 [`scripts/skill_validation.py`](scripts/skill_validation.py) 来强制执行 Anthropic 风格的元数据、eval、链接、布局和工具对等约束。 - [`scripts/package-skills.py`](scripts/package-skills.py) 在写入 `.skill` 归档文件之前重用相同的验证器。 - 生成的 `.skill` 归档文件、skill eval 工作区、skill benchmark 输出、`dist/` 输出、Go 测试二进制文件、`bin/` 输出和覆盖率报告都会被忽略,不得作为源代码文件跟踪。 - 当存在本地 skill eval、benchmark、blind-comparison 或 description-optimization 输出时,验证还会检查官方生成的输出位置和字段结构,例如 `eval_metadata.json` 的 eval-name 目录匹配、run-dir `grading.json`、`comparison-N.json`、`analysis.json` 和 `timing.json`、`metrics.json`、workspace-root `history.json` 的 current-best、parent-reference 一致性和 pass-rate 范围、带 run 后缀的 `feedback.json` 审查 ID、workspace 的 `benchmark.md`、workspace 和带时间戳的 benchmark 模式的 `benchmark.json`,以及平衡的触发器 eval 集,包括嵌套的 grading、grading summary 一致性、timing 时间戳/持续时间一致性、metrics 工具调用一致性、benchmark 元数据/运行一致性、benchmark 运行顺序、benchmark 预期、benchmark 结果一致性、benchmark 备注、benchmark 汇总统计/运行/差异一致性、comparison 预期-结果一致性、analysis 字段结构、comparison 和 analysis 分数范围,以及 A/B blind-comparison 标签字段。 构建可移植的 `.skill` 归档文件: ``` make package-skills ``` **分类:** 安全分析(6) · 证书操作(7) · PKI(5) · CRL(2) · 网络空间测绘(10) · 协议分析(4) · 合规检查(8) · 吊销与 HSTS(2) · 链验证(1) 有关所有 skill,请参见 [.claude/skills/](.claude/skills/);有关完整索引,请参见 [CLAUDE.md](CLAUDE.md)。 ## 📊 项目统计 | 指标 | 数量 | |--------|-------| | Skills | 45 | | CLI 命令 | 51 | | MCP 工具 | 54 | | 证书安全检查 | 18 | | TLS 漏洞扫描 | 11 | | Go SDK 函数 | 50+ | | 离线 SDK 函数 | 7 | | 支持的平台 | 9 | | 结构化错误类型 | 15 | ## 🇨🇳 简体中文 ### 简介 `cert-skills` 是一个 AI 原生的证书安全工具包,支持四种接入方式:**Skills**(45个可执行提示词)、**CLI**(51个命令)、**MCP 服务器**(54个工具)、**Go SDK**(50+函数)。 ### 🤖 AI 一键接入 **Skills 接入(推荐):** 45个可执行提示词技能,复制到项目即可自动识别: ``` # 一键安装 — 复制全部 45 个技能到你的项目 git clone https://github.com/cyberspacesec/certificate-skills.git cp -r certificate-skills/.claude/skills/ /your/project/.claude/skills/ ``` 每个 Skill 是一个**可执行提示词**(不是文档),告诉 AI Agent: - **何时使用** — 触发短语自动激活技能 - **何时不使用** — 避免选错工具的边界 - **操作指令** — 包含 CLI 和 MCP 工具调用的分步工作流 - **反模式** — 常见错误和需避免的做法 仓库结构: - [`skills/`](skills/) 保存可移植的 Anthropic-style skill packages(`SKILL.md` 和可选 `references/`、`scripts/`、`assets/`)。 - 每个 `SKILL.md` 在 frontmatter 后包含 Markdown instructions,fenced code block 外只包含一个 H1,并至少包含一个 H2 小节。 - frontmatter 只使用受支持的 `name`、`description`、工具元数据和可选 `compatibility` 字段。 - 每个 `SKILL.md` 内的matter key 不能重复。 - 工具元数据字段必须是非空 YAML list,并使用对应的 portable 或 Claude Code 工具名格式。 - skill 声明的工具必须在该 skill 的 Markdown instructions 中被引用。 - Claude Code skill prompts 必须在 fenced code block 外包含必需的 executable sections。 - frontmatter description 保持简洁(不超过 100 words),并承载触发说明。 - 可移植 skill 将触发说明保留在 frontmatter description 中,而不是 `When to Use` 正文段落。 - 可移植 skill 的 reference 链接包含 `Read when` 提示,用于说明何时读取详细材料。 - 超过 300 行的 reference 文件必须包含 `Contents` 或 `Table of Contents` 标题。 - 打包的 `scripts/` 和 `assets/` 文件必须从 `SKILL.md` 链接;打包脚本必须可执行。 - skill package 会拒绝不应分发的生成缓存或备份产物。 - skill package 内容会拒绝可能破坏用户系统的高风险 shell 模式。 - 每个可移植 skill 都包含 `evals/evals.json`,内含 2-3 个测试提示词,只使用 skill-creator eval schema 字段,并使用连续 case id。 - skill eval prompt 使用真实用户请求风格,而不是评测器控制指令。 - skill `evals/` 目录只包含 `evals.json` 和可选的 `files/` fixture。 - skill eval 文件测试 fixture 如有使用,放在 `evals/files/` 下。 - 每个 `evals/files/` fixture 至少被一个 eval case 引用。 - [`.claude/skills/`](.claude/skills/) 保存 Claude Code 可直接复制使用的版本,包含 MCP `allowed-tools` 元数据。 - [`evals/evals.json`](evals/evals.json) 保存仓库级技能选择 smoke eval。 - [`evals/skills-structure.json`](evals/skills-structure.json) 保存仓库结构检查,由 `make validate-skills` 校验。 - `make validate-skills` 使用 [`scripts/skill_validation.py`](scripts/skill_validation.py) 校验 Anthropic-style 元数据、eval、链接、目录布局和工具元数据一致性。 - [`scripts/package-skills.py`](scripts/package-skills.py) 在写入 `.skill` archives 前复用同一套校验器。 - 生成的 `.skill` archives、skill eval workspaces、skill benchmark outputs、`dist/` 输出、Go test binaries、`bin/` 输出和 coverage reports 会被忽略,不能作为源码跟踪。 - 如果本地存在 skill eval、benchmark、blind-comparison 或 description-optimization 输出,校验还会检查官方 generated-output 位置和字段结构,例如 `eval_metadata.json` eval-name 目录匹配、run-dir `grading.json`、`comparison-N.json`、`analysis.json` 与 `timing.json`、`metrics.json`、workspace-root `history.json` current-best、parent-reference consistency 与 pass-rate range、run 后缀 `feedback.json` review ids、workspace `benchmark.md`、workspace 和 timestamped benchmark-mode `benchmark.json`、balanced trigger eval sets,包括 grading、grading summary consistency、timing timestamp/duration consistency、metrics tool-call consistency、benchmark metadata/run consistency、benchmark run ordering、benchmark expectations、benchmark result consistency、benchmark notes、benchmark summary stat/run/delta consistency、comparison expectation-result consistency、analysis field shapes、comparison and analysis score ranges 与 A/B blind-comparison 标签字段。 打包 portable `.skill` archives: ``` make package-skills ``` **MCP 接入(Claude Code):** ``` { "mcpServers": { "certificate-skills": { "command": "cert-skills-mcp", "args": [] } } } ``` **最佳体验:Skills + MCP 配合使用。** Skills 提供提示词智能,MCP 提供工具执行。 **Go SDK 接入:** ``` import pkg "github.com/cyberspacesec/certificate-skills/pkg" result, err := pkg.AnalyzeSecurity("example.com") // 在线 keyUsage := pkg.CheckKeyUsageFromCert(cert) // 离线 ``` ### 安装 ``` # 下载预编译二进制 curl -sL https://github.com/cyberspacesec/certificate-skills/releases/latest/download/certificate-skills_0.1.1_linux_x86_64.tar.gz | tar xz && sudo mv cert-skills /usr/local/bin/ # 从源码编译 git clone https://github.com/cyberspacesec/certificate-skills.git cd certificate-skills && go build -o cert-skills ./cmd/ ``` ### 核心能力 | 类别 | 数量 | 说明 | |------|------|------| | Skills | 45 | AI Agent 可执行提示词 | | CLI 命令 | 51 | 全部能力通过命令行暴露 | | MCP 工具 | 54 | AI Agent 直接调用 | | 证书安全检查 | 18 | CERT-001 到 CERT-018 | | TLS 漏洞扫描 | 11 | Heartbleed 到 DROWN | | Go SDK | 50+ | 含 7 个离线分析函数 | | 支持平台 | 9 | Linux/macOS/Windows/FreeBSD | 详见 [CLAUDE.md](CLAUDE.md) 获取完整的 Skills 索引和接入指南。 ## 📄 许可证 [MIT 许可证](LICENSE)
标签:CLI, EVTX分析, Go SDK, Homebrew安装, MCP, SSL/TLS, WiFi技术, 实时处理, 文档结构分析, 日志审计, 网络安全, 证书分析, 隐私保护