首页/安全/漏洞与攻击面速查/证书透明度日志自查实操
暴露面收敛45 条

证书透明度日志自查实操

证书透明度(CT)日志公开记录签发的证书:用 crt.sh 按域名查询可列出历史证书中出现的所有名称,是发现子域与历史暴露的常用手段。

漏洞与攻击面速查安全更新于 2026-10-13

证书透明度日志是什么

证书透明度(Certificate Transparency,CT)要求证书颁发机构把签发的证书提交到公开的、仅可追加的日志中,任何人都能查询。这个机制最初用于发现被错误签发的证书,如今成为资产发现与暴露面核查的实用工具:按域名查询历史证书,可以列出证书中出现过的全部名称,包括早已停用、从未对外公布、或者只在测试环境使用过的子域。

基本信息

数据来源CT 日志聚合服务(如 crt.sh)
查询维度按域名模糊查询、按证书指纹查询、按颁发机构查询
典型产出历史证书中出现过的名称清单(含通配符证书覆盖范围)
配套动作与 DNS 解析记录、资产台账交叉核对

典型使用场景

  • 梳理子公司与业务线的域名,找出未纳入资产台账的子域
  • 上线前核对通配符证书覆盖范围,评估其潜在暴露面
  • 发现早已停用但仍可解析的历史域名,纳入下线清理流程
  • 评估并购场景的目标方资产:从 CT 记录快速列出其域表面
  • 与 DNS 记录交叉验证:CT 里有但 DNS 无解析的,可判断为已退役

crt.sh 查询示例

crt.sh 查询示例
# 查询 example.com 相关证书中出现的全部名称
curl -s 'https://crt.sh/?q=%25.example.com&output=json' \
  | python3 -c "import json,sys; [print(n) for e in json.load(sys.stdin) for n in e['name_value'].split(chr(10))]" \
  | sort -u > ct-names.txt
wc -l ct-names.txt                 # 统计名称数量
# 与 DNS 解析情况对照,筛选仍可解析的名称
grep -v '^\*' ct-names.txt | while read d; do dig +short "$d" | head -1 | sed "s|^|$d |"; done

结果读法

现象含义后续动作
名称在台账中不存在影子资产或历史遗留确认归属,纳入管理或下线
只有通配符记录具体子域未单独签发按通配符覆盖范围评估暴露
有证书但无 DNS 解析域名已退役确认解析已清理,避免残留记录
大量测试域名研发流程缺少命名规范约定测试域与生产域隔离策略
CT 记录只反映『曾经申请过证书』,不能证明服务当前可用:必须与 DNS 解析、端口可达性一起核对才能得出暴露结论。
通配符证书会把所有子域纳入同一张证书的名称范围,反过来也让攻击者更容易从 CT 记录推断内部命名规则,域名命名应避免使用可被穷举的编号模式。

易错点

  • 把 CT 记录直接当作在线资产清单:证书有效期内域名早已下线,造成大量无效核查
  • 忽略通配符证书的覆盖范围:认为只有一个域名,实际覆盖全部子域
  • 只查一次不做周期性复核:新申请的子域证书不会自动进入旧清单
  • 发现影子域名后直接申请下线:未先确认是否存在业务依赖,导致业务中断

数据来源与参考

  • 证书透明度(RFC 6962)说明
  • crt.sh 服务说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌