一句话定义:证书透明度(Certificate Transparency,CT)是一套公开、只能追加、任何人都能查的证书登记日志——CA(Certificate Authority,证书颁发机构)签发的每一张 TLS 证书都要先登记进去,浏览器只认"有登记收据"的证书。
老问题:章是真的,账本却没有
HTTPS 的信任建立在"CA 盖章"之上:CA 用自己的私钥给网站证书签名,浏览器内置一份受信任的根证书清单,能对上链就放行。
这像一个只有印章、没有登记簿的世界。印章本身是真的,但谁盖过章、盖给了谁,没人记账。于是某家 CA 被入侵、或者内部操作失误,给攻击者签出一张 google.com 的证书,浏览器照样认,用户毫无感觉,域名主人更不知情。
CT 的办法是给证书办"公示登记":CA 签发时把证书提交给多家互相独立的日志服务器,日志返回一张带签名的收据(SCT,Signed Certificate Timestamp)。浏览器握手时检查收据,数量不够或没有,就直接不认这张证书。日志底层是哈希树结构,只能追加、不能删改,事后偷改一条记录会让整棵树的哈希对不上,等于当众露馅。
和 CAA、吊销查询的分工
| 机制 | 生效时机 | 回答的问题 | 谁来执行 |
|---|---|---|---|
| CT 日志 | 签发时登记,握手时校验 | "这张证书有没有被公开登记?" | CA 提交,浏览器检查 |
| CAA 记录 | 签发之前 | "这个域名允许你签吗?" | CA 去查 DNS |
| OCSP / CRL | 证书使用期间 | "这张证书是否已被吊销?" | 客户端去查 |
一句话:CAA 是事前上锁,CT 是事后公示,吊销查询是事后补救。
假证书是谁先发现的
现实中多起针对 google.com 等大域名的错误签发,最先发现的不是用户,而是盯着 CT 日志做监控的团队:他们扫描日志里新出现的证书,看到不该有的域名就报警,浏览器厂商随后吊销并对涉事 CA 采取措施。这也解释了一个细节——伪造大厂证书很难长期藏住,因为要骗过浏览器就得先登记,一登记就公开了。
对从业者和普通人的意义
- 开发者/运维:定期搜一遍自己域名在 CT 日志里的记录。出现陌生证书,往往意味着私钥泄漏、被中间人代理,或有人误签。反过来,新签发证书会暴露子域名,做资产梳理很好用,也提醒你自家子域名是公开可见的。
- 普通用户:地址栏的锁不等于网站可信,只说明通道没被偷看,内容本身仍要自己判断。
- AI 从业者:抓数据、RAG 检索、智能体调外部 API,全靠 TLS。图省事关掉证书校验,等于把门锁拆了。CT 日志本身也是个公开数据源,可以用来发现新上线的服务、跟踪证书变化。
浏览器各自的 CT 政策和 CA/Browser Forum 的基准要求细节会变,以官方页面为准。
