Skip to content

CA 调查

证书不是凭空来的——它们由 CA(Certificate Authority)签发。CA 调查就是回答"某张证书是谁签的、这个 CA 可信吗、它还签了哪些证书"。

FetchCAByIDFetchIssuerCertificatesByCAIDFetchCertificatePopulationsca?id= / ?caid=

三个相关方法

🏛️FetchCAByID
端点 `ca?id=caID`。取某个 CA 证书的详情页
📜FetchIssuerCertificatesByCAID
端点 `?caid=issuer_ca_id`。取某个 issuer_ca_id 签发的所有证书
📊FetchCertificatePopulations
端点 `/cert-populations`。证书人口统计(可按 RootOwner 分组)

三个 ID 的区别

flowchart LR CA["某张 CA 证书"] -->|"它的 crt.sh ID"| CID["用于 ca?id=cid
看这张 CA 证书本身"] CA -->|"它的 issuer_ca_id"| ICID["用于 ?caid=icid
看它签发了哪些叶子证书"] LEAF["某张叶子证书"] -->|"它的 issuer_ca_id 字段"| ICID

别混淆

搜索结果 Certificate 里有 issuer_ca_id 字段——拿着它就能反查"这个签发者还签了哪些证书"。

FetchIssuerCertificatesByCAID

这是 crt.sh 搜索结果表里"Issuer Name"链接背后的端点:

go
page, _ := client.FetchIssuerCertificatesByCAID(ctx, 12345)
// page.Content = crt.sh ?caid=12345 的 HTML 结果表

caid 必须 > 0,SDK 会前置校验。

证书人口统计

FetchCertificatePopulations(ctx, group) 展示各 CT 日志/根属主的证书数量分布:

flowchart LR CP["/cert-populations"] --> G{group} G -->|默认| T1["统计表"] G -->|RootOwner| T2["按根属主分组
看各组织签发量"]

宏观视角

这是评估"某 CA 在整个 PKI 生态里的体量"的宏观视角。ValidateCertPopulationGroup 会校验 group 合法性。

调查链路

flowchart TD S["搜某域名证书"] --> L["拿叶子证书 issuer_ca_id"] L --> IC["FetchIssuerCertificatesByCAID
看该 CA 签的所有证书"] IC --> CA["FetchCAByID
看 CA 证书本身"] CA --> PV["FetchPathValidationView
校验 CA 信任链"] CA --> CP["FetchCertificatePopulations
看该 CA 体量"]