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+ 个函数)。
[](https://golang.org)
[](LICENSE)
[](https://modelcontextprotocol.io)
[](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技术, 实时处理, 文档结构分析, 日志审计, 网络安全, 证书分析, 隐私保护