首页/网络/协议速查/证书透明度(CT)与 SCT

证书透明度(CT)与 SCT

CA 把签发的证书提交到公开日志并返回 SCT 签名;浏览器要求主流证书携带 SCT,用于发现「误签发/恶意签发」的证书。

协议速查网络更新于 2026-10-13

CT 是什么

证书透明度(Certificate Transparency,CT)要求 CA 把签发的每张公共可信证书提交到公开的、只可追加的日志中,并返回 SCT(Signed Certificate Timestamp,签名证书时间戳)。任何人都能审计这些日志,从而发现误签发或恶意签发的证书。Chrome 等浏览器要求公共可信证书携带足够的 SCT 才接受(RFC 6962 定义 CT v1,RFC 9162 为 CT v2)。

基本信息

机制每张公共证书提交到多个公开日志,可被任何人审计
SCT签名证书时间戳,可嵌入证书、随握手或经 OCSP 下发
规范RFC 6962(CT v1)、RFC 9162(CT v2)
适用范围公共可信 CA 签发的证书
内网自建 CA不需要 CT,也不受浏览器 SCT 要求约束
监控价值订阅日志可发现他人为你的域名申请了证书

典型使用场景

  • 证书排障:浏览器提示证书缺少透明度信息时定位原因
  • 品牌保护:订阅 CT 日志,第一时间发现别人给你的域名申请了证书
  • 安全审计:确认所用 CA 与证书链是否合规、SCT 数量是否足够
  • 自建 PKI 说明:解释内网证书为什么不需要 CT
  • 供应链排查:确认 CDN 或第三方服务实际使用的证书来源
  • 事件响应:证书被误签发后,日志是取证与撤销的依据入口

查看 SCT

查看 SCT
# 观察握手中是否下发 SCT 扩展(-tlsextdebug 会打印扩展细节)
openssl s_client -connect example.com:443 -tlsextdebug </dev/null 2>&1 | grep -i -A3 'signed certificate timestamp'

# 查看证书里是否嵌入 SCT 扩展
openssl s_client -connect example.com:443 </dev/null 2>/dev/null | openssl x509 -noout -text | grep -i -A2 'CT Precertificate SCTs'

SCT 的交付方式

方式位置特点
证书内嵌X.509 扩展最稳定,需要 CA 支持
TLS 扩展握手时下发现代服务器的常见形式
OCSP 装订OCSP 响应中携带需装订真正生效,失败可能被判缺失
仅日志可查日志中存在但握手未交付浏览器仍可能拒绝连接
Chrome 只对公共可信证书强制要求 SCT;内网自建 CA 签发的证书是否带 SCT 没有实际意义。
CT 日志只证明「某个 CA 签发过这张证书」,不代表域名所有者知情或同意,因此它是发现问题的线索而不是授权证明。
用公开的日志聚合查询服务订阅自己的域名,可以在证书签发后很快收到提醒,成本极低,是性价比很高的品牌防护手段。

易错点

  • 把 CT 日志当授权证据:日志只说明 CA 签过该证书,不代表域名所有者知情
  • 内网自建 CA 强行要求 SCT 只会增加复杂度,不带来安全收益
  • 公共 CA 证书缺少 SCT 会在 Chrome 上被拒并显示隐私错误;换证书后在浏览器与命令行双重验证更稳妥
  • 只监控主域名而不覆盖通配符与子域,会漏掉针对 *.yourdomain 的误签发

数据来源与参考

  • RFC 6962(Certificate Transparency)
  • RFC 9162

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌