传输层安全(TLS)证书既验证您正在访问的网站所有者也验证其信息真实可靠性。本文解释它如何工作。
哪些网站使用证书
以 https 开头的网站使用 TLS 服务器证书。使用 TLS 服务器证书的网站可提供两项保证:
- 网站的管理者拥有或控制该网站的域名,确保用户访问的是合法网站而不是诱骗模仿或带有恶意的复制网站。
- 网站和浏览器之间的通信使用 TLS 加密,防止窃听或被未授权第三方改动。
信任链
像 Firefox 这样的浏览器,会通过一个称为 信任链 的层级结构验证证书,它通常由至少三个证书组成:
- 根 (trust anchor) 证书
- 中间证书
- TLS 服务器 (end entity) 证书
根证书属于 证书颁发机构 (CA),浏览器信任,它负责发布证书。一般情况下,根证书颁发一个或多个中间证书;中间证书颁发 TLS 服务器证书给能证明对网站有控制的组织来使用。
证书依靠非对称密钥对加密算法:
- 私钥:这是密钥所有者保留的私密密钥,用来加密数据(包括证书)或解密用公钥加密的信息。
- 公钥:这是公开分享的密钥部分,用来验证用私钥生成的签名或者加密只有用私钥才能解密的信息。
公钥证书包含以下信息:
- 颁发证书的管辖机构(CA)详情
- 证书接收方的公钥
- 握有私钥一方的身份详情(参看 Certificate content 一节。对于 TLS,这个主要是指网站域名)
现在,我们来看下 Firefox 如何判断网站是否安全。
Firefox 如何验证证书可信?
Firefox 使用证书链来验证 TLS 证书:
- 你访问网站时,Firefox 下载网站证书。
- Firefox 使用内部证书管辖结构(CA)数据库检查证书。
- 使用其根 CA 证书的公钥确保证书链上直至网站提供的 TLS 服务器证书的根证书和中间证书签名正确。
- Firefox 检查证书信息,确保你访问网站的证书和服务器证书一致。
- Firefox 为加密 HTTP 连接创建对称(单一)密钥。
- Firefox 使用服务器证书的公钥加密对称密钥。
- 服务器使用拥有的私钥解密连接数据,完成 TLS 握手协议。
随后,Firefox 和网站之间建立安全连接。
查看证书
要查看证书,请按照以下步骤操作:
Firefox 现在将打开 about:certificate 页面,以显示您所在网站的证书信息:
从左到右有三个标签页显示 TLS 服务器证书、中间证书和根证书。
证书内容
TLS 服务器证书包含以下信息:
- 主题:包含可选属性,比如网站名称和拥有该证书的组织名称。
- 颁发者:标识颁发该证书的实体,CA。
- 有效性:证书有效时长
- 主题替代名称:列出该证书可以标识的网站地址列表。
- 公钥信息:公钥的属性信息。
- 序列号:标识该证书的唯一序列号。
- 签名算法:创建签名使用的算法。
- 指纹:证书文件的哈希:DER 二进制。
- 密钥用途 和 扩展密钥用途:指定该证书可用于的用途,例如确认网站的持有者(Web 服务器身份验证)。
- 主题密钥标识符:从 TLS 证书的公钥生成,作为标识该证书的一种方式。
- 颁发机构密钥标识符:从 CA 的公钥生成,作为标识与用于签署证书的私钥相对应的公钥的一种方式。
- CRL 端点:发布 CA 的 证书撤回列表 (CRL) 的位置。
- 颁发机构信息:包含证书颁发机构和中间证书文件的验证方法。
- 证书策略:包含指向 TLS 类型的指针(比如证书发布日期的验证等)。
- 嵌入的 SCT:列出 已签证书时间戳 (SCT)。
有问题的证书
当您访问地址以 https 开头的网站,并且检测到 TLS 证书存在问题时,浏览器将显示一个错误页面。安全警告码是什么意思? 一文描述了常见的证书错误。
如要查看有问题的证书,步骤如下:
- 在警告页面上,点击 。
- 点击 查看证书查看网站证书。
-
有问题的证书将会显示出来。