CA和数字证书

本文最后更新于 2025年5月24日 下午

CA指的是”Certificate Authority”(证书颁发机构)。CA是存储、签名和颁发数字证书的实体。CA充当受信任的第三方,既受证书的主体(所有者)的信任,也受依赖证书的一方的信任。

证书的格式由X.509或EMV标准指定。

你可以使用https://www.ssleye.com/ssltool/cer_check.html查看证书的详细信息。

一个数字证书通常包含以下信息:

  • 版本号:表示X.509 标准适用于该证书的版本。

  • 证书持有者的信息:包括名称、组织和其他标识信息。

  • 证书颁发机构(CA)的信息:提供了签发该证书的CA的识别信息。

  • 序列号(Serial Number):由CA维护的为它所发的每个证书分配的一个序列号,用来追踪和撤销证书。只要拥有签发者信息和序列号,就可以唯一标识一个证书

  • 签名哈希算法:数字签名所采用的算法,如:SHA384。

  • 签名算法:如sha384ECDSA

  • 有效期限:证书的有效期限,包括起止时间。

  • 公钥信息:包括服务的公钥算法、公钥。

  • 扩展信息:如密钥用法、主体备用名称等。

证书又分为几个类别:

  • DV(域验证)

    域验证是今天最常见的类型;对这些证书,CA只会对申请者是否拥有域的控制权进行核实,不管其它事情。有很多方法来做这件事,例如要求申请人在web服务器上某个文件中放置一个随机数。这些证书也是最便宜的。

    DV证书由CA颁发,极少或没有人的互动,通常在申请人方面也是自动完成的。ACME之类的协议允许完全自动申请和颁发过程。

    DV证书的目的是启用加密连接,它并不会验证是谁在管理着域,或他们是否诚实,或他们的域是否合法——唯一的目的就是在浏览器和服务器之间启用安全连接。

  • OV(机构验证)

    相比之下,机构验证(也叫高可信度)证书要贵得多,大约每年200美元(最多可达到500美元)。由于需要额外的文书工作,其申请过程更复杂。相比DV来说,增加的价格很大程度上是审核过程的额外工作造成的;除了域的验证控制之外,CA还将检查文件以核实申请者是否为合法机构(通过许可证或法人文件)。

  • EV(扩展验证)

    EV证书最为昂贵,大约每年300美元(最多可能达到1000美元),EV证书的审核要求在OV证书的审核基础上有所增加,审核过程最为详细。它可能需要一些文件,如银行账户证明、地址证明、更详细的法人证明以及雇员作为证书申请人并得到授权的证明。

    获得EV证书是一个复杂的过程,不仅需要时间,还需要技术人员的努力,以及公司行政部门提供所需要的文件。

服务器向CA申请证书的流程:

  1. 服务器生成一对密钥(公钥和私钥)

  2. 从密钥中衍生出CSR(certificate signing request)文件。CSR中主要包含如下信息:

    1. 公钥信息
    2. 主体信息
    3. 签名算法和数字签名(使用服务器私钥)
  3. 将CSR提交给CA验证

  4. 通过后CA会将这些信息进行hash然后用自己的私钥加密即生成数字签名,最后颁发证书。

一个HTTPS请求示例:

  1. 客户端发起请求

    这个请求会包含客户端支持的 SSL/TLS 协议版本,以及一系列加密算法。

  2. 服务端返回证书和选择的协议和算法

  3. 客户端验证证书

    1. 检查该证书的ca是否位于浏览器信任的证书链内
    2. 检查证书是否过期,是否被吊销
    3. 使用对应ca的公钥对数字签名进行解密;按照证书中的签名算法生成原始信息的摘要,二者比对验证证书的有效性。
    4. 生成一个随机的会话密钥,然后使用服务端的公钥(提取自证书)对这个会话密钥进行加密并发送至服务端。
  4. 服务端使用自己的私钥对会话密钥进行解密。这个会话密钥将用于与客户端接下来的对称加密通信。

  5. 加密通信(加密算法已在第二步协商完毕)。

图例如下:

HTTPS请求图例

名词解释

数字签名:

对信息使用RSA或SHA1等算法生成摘要(HASH)。然后对摘要使用私钥加密生成数字签名。

证书链:

有了证书以后,是可以继续签发下级证书的,以此方式形成的所有相关证书就叫证书链。