跳转到正文
buybitcoinsmart

术语表 /开发者参考

根证书

根证书是什么?
根证书是证书链顶端自签名的信任锚,之所以被信任,只是因为您的操作系统或浏览器厂商将其预置在了系统中。

每一次证书检查都终止于一个根证书。根证书为自己签名,之所以被信任,只是因为它随设备一同预装在根证书库中;最著名的例子 DST Root CA X3 签发于2000年9月30日,恰好21年后到期。如果您仅凭浏览器的挂锁图标来判断一家交易所,您信任的是那份根证书列表,而不是该交易所本身的任何情况。

运作方式

根证书在颁发者字段和主体字段中写的是同一个机构,签署它的密钥就是它所认证的密钥。这种循环正是其要点所在。根证书之上没有任何对象为其背书,因此验证方无法拿它与更高层级的对象核对;只能在本地列表中查找该证书,并将该列表视为权威。

这些列表由少数几家公司维护。Apple、Microsoft、Mozilla 和 Google 各自运行一个根证书计划,并公布纳入标准、审计要求和移除程序;您的笔记本电脑或手机上的根证书库,就是您的厂商随软件一并发布的那一份。根证书的纳入会持续很长时间,因为移除一个根证书意味着要向每一台持有它的设备推送更新。ISRG Root X1 是 Let's Encrypt 背后的信任锚,签发于2015年6月4日,直到2035年6月4日才到期。

其结构性弱点在于,根证书库中的任何一个根证书都可以为任何名称背书。没有任何规则将荷兰的证书颁发机构限定于荷兰的域名,因此一家机构被攻破,就会同时动摇所有网站。DigiNotar 在2011年证明了这一点:攻击者于当年7月10日为 google.com 签发了一张伪造证书,并用它拦截伊朗用户的流量。Mozilla、Google 和 Microsoft 在2011年9月的头几天移除了 DigiNotar 的根证书,该公司在当月结束前就已破产。

在哪里会遇到它

根证书通过 BIP70 进入比特币领域,该提案要求钱包在支付界面显示公司名称之前,先验证商户的证书链直至受信任的根证书。桌面软件借用操作系统的根证书库来完成验证,移动软件则常常出错,Bitcoin Core 在0.20.0版本中彻底删除了这一功能。bitcoin.org 的开发者参考文档仍然列有这个术语,这也是如今人们查阅它的主要原因。

更有参考价值的对比是比特币自身的信任锚。全节点从硬编码在软件中的创世区块(日期为2009年1月3日)出发,由此起自行验证每一条规则。没有人能通过向您的手机推送更新,在这个信任锚中添加条目;也没有任何机构会因被攻破或受到施压,而为违反规则的区块背书。根证书库的运作方向则正好相反:信任从一份您没有编写、也无法审计的列表向下传递。

根证书 vs 叶证书

根证书标识证书颁发机构;叶证书标识服务器。根证书为自签名,有效期长达二十年,其私钥保存在离线的硬件模块中,每年在见证人在场的情况下取出几次。叶证书写明您实际连接的主机名,有效期为数月,其私钥存放在暴露于互联网的在线 Web 服务器上。人们说“证书有效”,往往只是指叶证书能够被解析、日期也对得上,但决定连接是否可信的问题是:证书链终止于哪个根证书。

请勿混淆

常见问题

比特币依赖根证书吗?

不依赖。比特币节点的信任锚是2009年1月3日的创世区块,以及节点自行检查的共识规则。证书颁发机构唯一进入过该协议的地方是 BIP70,而 Bitcoin Core 已在0.20.0版本中将其移除。

我可以删除自己不信任的根证书吗?

可以,所有主流操作系统都允许您取消对某个根证书的信任,有些人会移除自己认为有风险的证书颁发机构。请预期会出现故障:任何证书链终止于该根证书的网站都将无法加载,而且系统不会提示您是哪些网站。

接着阅读

相关术语

开发者参考中的更多术语

阅读本页英文版