快速开始
挑你顺手的形态,三分钟跑起来。
📦Go SDK
嵌入你自己的 Go 程序
⌨️CLI
命令行、脚本、CI
🔌MCP Server
任何 MCP 兼容客户端
🤖AI Skills
Claude Code 零安装
四种形态背后是同一个 SDK——能力完全等价,只是面向不同使用者:
flowchart TB U["👤 使用者"] U --> F1["🤖 AI Skills
给 AI 看的说明书"] U --> F2["🔌 MCP Server
20 个结构化工具"] U --> F3["⌨️ CLI
26 条人类命令"] U --> F4["📦 Go SDK
20 个程序方法"] F1 --> SDK["pkg/crtsh
唯一事实来源"] F2 --> SDK F3 --> SDK F4 --> SDK SDK --> CRT["🌐 crt.sh
证书透明度搜索引擎"]
给 AI 看的说明书"] U --> F2["🔌 MCP Server
20 个结构化工具"] U --> F3["⌨️ CLI
26 条人类命令"] U --> F4["📦 Go SDK
20 个程序方法"] F1 --> SDK["pkg/crtsh
唯一事实来源"] F2 --> SDK F3 --> SDK F4 --> SDK SDK --> CRT["🌐 crt.sh
证书透明度搜索引擎"]
形态一:Go SDK
bash
go get github.com/cyberspacesec/crt.sh-skills/pkg/crtshgo
package main
import (
"context"
"fmt"
crtsh "github.com/cyberspacesec/crt.sh-skills/pkg/crtsh"
)
func main() {
client := crtsh.NewClient(crtsh.WithTimeout(30_000_000_000)) // 30s
certs, _, err := client.SearchCertificates(context.Background(), crtsh.QueryParams{
Q: "example.com",
ExcludeExpired: true,
Deduplicate: true,
})
if err != nil {
panic(err)
}
for _, c := range certs {
fmt.Printf("%d %s %s\n", c.ID, c.NotBefore, c.NameValue)
}
}形态二:CLI
下载对应平台的二进制(见 Release 发布流程),或直接:
bash
go run github.com/cyberspacesec/crt.sh-skills/cmd/crtsh-cli@latest search example.com --exclude-expired --deduplicate输出默认是表格,加 -o json 拿 JSON,-o csv 拿 CSV:
$ crtsh-cli search example.com # 表格(默认,人读)
$ crtsh-cli search example.com -o json | jq '.[0].id' # JSON(机读)
$ crtsh-cli search example.com -o csv > certs.csv # CSV(Excel)
$ crtsh-cli get-raw-cert 12345 | openssl x509 -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: ...
$ crtsh-cli search example.com -o json | jq '.[0].id' # JSON(机读)
$ crtsh-cli search example.com -o csv > certs.csv # CSV(Excel)
$ crtsh-cli get-raw-cert 12345 | openssl x509 -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: ...
形态三:MCP Server
bash
go run github.com/cyberspacesec/crt.sh-skills/cmd/mcp-server@latest --transport stdio把它接到任何 MCP 兼容客户端(Claude Desktop、Cursor 等)即可。
三种传输
--transport stdio:本地 AI 客户端(默认)--transport sse --addr :8080:SSE 远程--transport http --addr :8080:Streamable HTTP
形态四:AI Skills(Claude Code 零安装)
在 ~/.claude/settings.json 加:
json
{
"mcpServers": {
"crt-sh-skills": {
"command": "go",
"args": ["run", "github.com/cyberspacesec/crt.sh-skills/cmd/mcp-server@latest", "--transport", "stdio"]
}
}
}之后在 Claude Code 里直接说"帮我查 example.com 的证书",AI 会自动调用 search_certificates 工具:
sequenceDiagram participant U as 用户 participant AI as Claude Code participant MCP as MCP Server participant CRT as crt.sh U->>AI: 帮我查 example.com 的证书 AI->>AI: 匹配 crtsh-search skill AI->>MCP: search_certificates(query=example.com) MCP->>CRT: GET ?q=example.com&output=json CRT-->>MCP: JSON 证书数组 MCP-->>AI: 结构化结果 AI-->>U: 用自然语言回答 + 证书列表
验证一下
随便挑一张真实证书 ID(例如 crt.sh 上的 12345)跑:
$ crtsh-cli get-cert 12345
crt.sh ID: 12345
Subject: CN=example.com
Issuer: CN=... (CA ID: 12346)
SHA-256: abcd1234...
Validity: 2024-01-02 .. 2025-01-02
✓ 全链路通
crt.sh ID: 12345
Subject: CN=example.com
Issuer: CN=... (CA ID: 12346)
SHA-256: abcd1234...
Validity: 2024-01-02 .. 2025-01-02
✓ 全链路通
能看到签发者、有效期、SAN、SHA 指纹等详情就说明通了。
下一步
想了解设计取舍?看 设计理念。