跳转到正文
buybitcoinsmart

术语表 /开发者参考

X.509证书

又称 X.509 certificate、数字证书。

X.509证书是什么?
X.509证书是一种经过签名的文件,将公钥与名称和有效期绑定在一起,也是您连接交易所时每一次 HTTPS 连接所依据的格式。

这一格式由来已久,也显出了年代感:X.509于1988年作为目录标准的一部分出现,至今仍在使用的互联网规范 RFC 5280则发布于2008年5月。证书是由签发者签名的结构化记录,并非机密,因此可以放心分发。它能证明的内容很有限:有人说服了某个机构,使其相信自己控制着某个名称。

运作方式

证书由一系列字段和覆盖所有字段的签名组成。

对读者而言,重要的字段不多。序列号向其签发者标识该证书。签发者字段写明由谁签名,主体字段写明证书所针对的对象,两个时间戳划定证书有效的时间窗口。主体公钥信息块中存放密钥本身。其余内容由扩展字段承载,其中一个扩展承担了大部分工作:subjectAltName 列出证书所覆盖的域名。

通用名称字段是经典的陷阱。它看起来像是存放域名的地方,多年来也确实如此,但 RFC 6125已于2011年3月弃用对它的读取,浏览器现在会忽略它。如果证书的 subjectAltName 没有列出您正在访问的网站,无论其通用名称写的是什么,验证都会失败。

过去十年间,证书的有效期大幅缩短。自2020年9月1日起签发的公开受信任 TLS 证书,有效期不得超过398天,此前先是三年,后来是两年;Let's Encrypt 则因续期已自动化而常规签发有效期为90天的证书。较短的有效期可替代吊销,而吊销机制从未可靠地发挥作用。

任何人都可以制作证书。用自己的密钥为证书签名,就得到自签名证书,其签发者和主体完全相同,这是一种完全有效的文件,但没有任何信任库会承认它。使证书值得信任的并非签名本身,而是签名者的身份。

在哪里会遇到它

点击任何浏览器中的挂锁图标,您看到的就是一份 X.509证书。

凡是软件必须核实某样东西确实来自特定厂商的地方,都会出现同样的文件格式:已签名的应用程序二进制文件、已签名的固件更新,以及部分硬件钱包携带的认证证书,厂商的应用程序借此区分正品设备和克隆设备。BIP70 曾把证书直接嵌入比特币支付请求,这是该格式唯一一次成为比特币协议的一部分。

有两个习惯可以保护买家。在存放资金的网站上遇到证书警告时,切勿点击继续访问,因为浏览器是在报告名称与密钥不匹配,而在交易所域名上,这种情况不存在无害的版本。另外请记住,欺诈网站上出现有效证书是常见情况,并不矛盾:验证针对的是名称,所以如果该名称与真实名称只是近似,证书就是在履行其职责,而您却会损失资金。

X.509证书 vs 叶证书

X.509是一种格式,叶描述的是位置。证书链中的每一份证书都是 X.509证书,包括中间证书和自签名的根证书,称其中某一份为叶证书,只是说它位于链的末端,标识的是实际的服务器,而不是授权进一步签发。两者的区别体现在一个扩展上:basicConstraints 将其标为认证机构的证书可以为其他证书签名,叶证书则不可以。

请勿混淆

常见问题

为什么证书现在这么快就会过期?

因为吊销机制不可靠,所以较短的有效期可以限制不应再被信任的证书所造成的损害。自2020年9月1日起签发的公开受信任证书,有效期上限为398天,而 Let's Encrypt 使用90天。

自签名证书危险吗?

它本身并非有缺陷,但没有任何一方为其担保。签发者和主体是同一方,因此接受这样的证书就意味着信任把它交给您的人,这也是浏览器会发出警告、而不是悄悄建立连接的原因。

相关术语

开发者参考中的更多术语

阅读本页英文版