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
看这张 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 体量"]
看该 CA 签的所有证书"] IC --> CA["FetchCAByID
看 CA 证书本身"] CA --> PV["FetchPathValidationView
校验 CA 信任链"] CA --> CP["FetchCertificatePopulations
看该 CA 体量"]
下一篇