HTTPS中CA证书的签发与使用过程

LonelyMan 451 2022-11-10

过程

image

签发流程

  1. 服务方S向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证 (不交私钥)
  2. CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等
  3. 如信息审核通过,CA会向申请者签发认证文件-证书
    • 证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构CA的信息、有效时间、证书序列号等信息的明文,同时包含一个签名
    • 签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用CA的私钥对信息摘要进行加密,密文即签名

使用流程

  1. 客户端 C服务器 S 发出请求时,服务器S 返回证书文件
  2. 客户端 C 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即公钥合法
  3. 客户端 C 然后验证证书相关的域名信息、有效时间等信息
  4. 客户端 C 会内置信任CA的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA的证书,证书也会被判定非法

注意

  1. 申请证书不需要提供私钥,确保私钥永远只能服务器掌握
  2. 证书的合法性仍然依赖于非对称加密算法,证书主要是增加了服务器信息以及签名
  3. 内置 CA 对应的证书称为根证书
    • 颁发者和使用者相同,自己为自己签名,即自签名证书(部署自签SSL证书非常不安全)
  4. 证书 = 公钥(服务方生成密码对中的公钥)+ 申请者与颁发者信息 + 签名(用CA机构生成的密码对的私钥进行签名)
  5. 即便有人截取服务器A证书,再发给客户端,想冒充服务器A,也无法实现。因为证书和域名是绑定的

参考

HTTPS中CA证书的签发及使用过程