CLI 命令行
crtsh-cli 把 SDK 包装成 26 条命令,给人类、shell 脚本、CI 流水线用。基于 cobra。
三类使用者
👤人类
终端里直接敲,默认 table 输出,一眼能读
📜Shell 脚本
`-o json` 喂 jq,管道组合
🔧CI 流水线
`-o csv` 落盘进 Excel,或 json 喂下游
安装
bash
go install github.com/cyberspacesec/crt.sh-skills/cmd/crtsh-cli@latestbash
# 见 /deploy/release,一行下载解压
curl -sL https://github.com/cyberspacesec/crt.sh-skills/releases/latest/download/crtsh-skills-cli-${OS}-${ARCH}.tar.gz | tar xz全局 flag
bash
crtsh-cli [--timeout 30s] [--debug] [-o json|table|csv] command [flags]⏱️--timeout
覆盖默认 30s 超时
🐛--debug
打印 crt.sh 请求/响应原文
📤-o / --output
json(机读) / table(人读,默认) / csv
26 条命令分两大类——查询类对接 crt.sh 拿数据,列举类打印 SDK 选项目录:
flowchart TB CLI["crtsh-cli
26 条命令"] CLI --> Q["查询类(19 条)
对接 crt.sh 拿数据"] CLI --> L["列举类(7 条)
打印 SDK 选项目录"] Q --> Q1["搜索导出
search / export-json/csv/atom"] Q --> Q2["证书与视图
get-cert / get-raw-cert / get-asn1
get-hierarchy / get-graph / get-pv"] Q --> Q3["CT 与订阅
get-ct-entry / atom-feed"] Q --> Q4["CA 与统计
get-ca / issuer-certificates
cert-populations / advanced-search-page"] Q --> Q5["信息页
info-page"] Q --> Q6["Censys
censys"] Q --> Q7["add-chain
gen-add-chain"] L --> L1["list-types / list-pages
list-linters / list-match-modes
list-lint-types / list-group-modes
list-cert-population-groups / list-sort-directions"]
26 条命令"] CLI --> Q["查询类(19 条)
对接 crt.sh 拿数据"] CLI --> L["列举类(7 条)
打印 SDK 选项目录"] Q --> Q1["搜索导出
search / export-json/csv/atom"] Q --> Q2["证书与视图
get-cert / get-raw-cert / get-asn1
get-hierarchy / get-graph / get-pv"] Q --> Q3["CT 与订阅
get-ct-entry / atom-feed"] Q --> Q4["CA 与统计
get-ca / issuer-certificates
cert-populations / advanced-search-page"] Q --> Q5["信息页
info-page"] Q --> Q6["Censys
censys"] Q --> Q7["add-chain
gen-add-chain"] L --> L1["list-types / list-pages
list-linters / list-match-modes
list-lint-types / list-group-modes
list-cert-population-groups / list-sort-directions"]
查询类命令(19 条)
| 命令 | 作用 | 示例 |
|---|---|---|
search [query] | 搜索证书 | crtsh-cli search example.com --exclude-expired --deduplicate |
export-json [query] | 导出 JSON | crtsh-cli export-json example.com -o json |
export-csv [query] | 导出 CSV | crtsh-cli export-csv example.com > certs.csv |
export-atom [query] | 导出 Atom | crtsh-cli export-atom example.com |
get-cert [id] | 证书详情 | crtsh-cli get-cert 12345 --opt ocsp |
get-ct-entry [ctid] | CT 条目 | crtsh-cli get-ct-entry 111 |
atom-feed [identity] | Atom 订阅 | crtsh-cli atom-feed example.com |
get-raw-cert [id] | 取 PEM | crtsh-cli get-raw-cert 12345 | openssl x509 -text |
gen-add-chain [file|-] | 生成 add-chain | crtsh-cli gen-add-chain cert.pem |
get-asn1 [id] | ASN.1 视图 | crtsh-cli get-asn1 12345 |
get-hierarchy [id] | 层级视图 | crtsh-cli get-hierarchy 12345 |
get-graph [id] | 图谱视图 | crtsh-cli get-graph 12345 |
get-pv [id] | 路径校验 | crtsh-cli get-pv 12345 |
advanced-search-page | 高级搜索页 | crtsh-cli advanced-search-page |
cert-populations | 人口统计 | crtsh-cli cert-populations --group RootOwner |
info-page [page] | 信息页 | crtsh-cli info-page monitored-logs |
get-ca [ca-id] | CA 详情 | crtsh-cli get-ca 12345 |
issuer-certificates [ca-id] | 签发证书 | crtsh-cli issuer-certificates 12345 |
censys [query] | Censys URL | crtsh-cli censys example.com |
列举类命令(7 条)
这些是 SDK 选项的"命令行版目录"
直接读 registry.go,输出跟 SDK 辅助函数完全一致——单一来源。
bash
crtsh-cli list-types # 22 种搜索类型
crtsh-cli list-pages # 13 个信息页
crtsh-cli list-linters # 5 种 linter
crtsh-cli list-match-modes # 7 种匹配模式
crtsh-cli list-lint-types # 2 种 lint 输出
crtsh-cli list-group-modes # 3 种分组
crtsh-cli list-cert-population-groups # 人口统计分组
crtsh-cli list-sort-directions # 3 种排序方向search 命令的显示 flag
bash
crtsh-cli search example.com \
--issuer-ca-id 12345 \
--group icaid \
--sort 3 \
--dir v| flag | 取值 | 作用 |
|---|---|---|
--issuer-ca-id id | 数字 | 按 issuer CA ID 过滤 |
--group | none / icaid | 结果分组 |
--sort <列号> | 数字 | 排序列 |
--dir | ^ 升序 / v 降序 | 排序方向 |
输出格式分流
flowchart LR CMD["命令执行"] --> SDK["SDK 调用"] SDK --> O{"--output"} O -->|"json"| J["json.Marshal
机读/管道"] O -->|"table 默认"| T["tabwriter 表格
人读"] O -->|"csv"| C["csv.Writer
Excel"] J --> S["stdout"] T --> S C --> S
机读/管道"] O -->|"table 默认"| T["tabwriter 表格
人读"] O -->|"csv"| C["csv.Writer
Excel"] J --> S["stdout"] T --> S C --> S
选哪个
-o json 适合管道喂 jq;-o csv 适合 Excel;table 适合终端直接看。
管道实战
$ crtsh-cli search example.com -o json | jq '.[0].id'
12345
$ crtsh-cli get-raw-cert 12345 | openssl x509 -text -noout
Certificate:
Data: ...
12345
$ crtsh-cli get-raw-cert 12345 | openssl x509 -text -noout
Certificate:
Data: ...
$ crtsh-cli atom-feed example.com -o json | jq '.entries[0].updated'
"2026-07-04T08:23:11Z"
"2026-07-04T08:23:11Z"
$ crtsh-cli export-csv example.com > certs.csv
$ wc -l certs.csv
43 certs.csv
$ wc -l certs.csv
43 certs.csv
下一页