本文目录导读:

证书签发流程主要涉及证书颁发机构(CA)、证书申请者和依赖方三个角色,其核心目的是创建一个防伪的、可验证的数字身份。
流程主要分为以下几个关键步骤:
生成密钥对
这是整个流程的起点,必须在申请者自己的设备上完成,以确保私钥的绝对安全。
- 申请者使用本地工具(如 OpenSSL、浏览器内置功能)生成一对密钥:
- 私钥:严格保密,永远不应泄露或传输。
- 公钥:可以公开,将随证书请求一起发送给 CA。
创建证书签名请求
申请者需要向 CA 证明自己的身份,并请求 CA 对其公钥进行签名。
- 申请者创建一个包含以下信息的 CSR 文件:
- 申请者的公钥。
- 申请者的身份信息:如通用名称(通常是域名
www.example.com)、组织名称、国家/地区、电子邮件等。 - 数字签名:申请者使用自己的私钥对整个 CSR 文件进行签名,CA 可以通过该签名验证 CSR 确实来自该私钥的持有者,且内容未被篡改。
- 然后将 CSR 文件发送给 CA。
验证身份
CA 必须确认申请者就是其声称的实体,验证严格程度取决于证书类型:
- 域名验证型(DV,Domain Validation):最快速、成本最低,CA 通常通过以下方式验证申请者对域名的控制权:
- 发送一封包含验证链接的邮件到域名的 WHOIS 管理员邮箱。
- 要求申请者在域名下放置一个特定的 DNS TXT 记录或 HTTP 文件。
- 组织验证型(OV,Organization Validation):CA 会验证域名的控制权,并核实申请组织的真实存在(如检查商业注册信息),过程可能涉及人工审核。
- 扩展验证型(EV,Extended Validation):最严格、成本最高,CA 需要进行深度背景调查,核实组织的法律身份、实际地址、运营能力等,审核过程严格且耗时。
签发证书
验证通过后,CA 开始创建数字证书。
- CA 使用自己的根证书私钥或中间证书私钥对申请者的 CSR 进行签名。
- 构建证书数据:CA 将申请者的公钥、身份信息、证书有效期、序列号、CA 签名算法等信息整合起来。
- 计算数字签名:CA 使用其私钥对证书数据进行哈希计算,得到哈希值,然后用私钥对该哈希值进行加密,形成证书的数字签名。
- 生成最终证书文件:证书包含所有明文信息和数字签名。
颁发和安装
- CA 将签好的证书文件(通常为
.crt或.pem格式)发送给申请者,同时会提供必要的中间证书(用于构建完整的证书链)。 - 申请者收到证书后,将其与自己的私钥一起安装到服务器或设备上(Web 服务器、电子邮件客户端、代码签名工具)。
- 安全提示:仅在部署时,私钥才需要与在同一台服务器上,任何中间传输都应加密(如通过 HTTPS),但理想情况下私钥从未离开过申请者的控制环境。
证书使用与验证
当用户(依赖方)访问该证书保护的服务器时,会触发证书验证流程:
- 服务器发送证书文件(和中间证书)给用户浏览器。
- 浏览器检查证书是否在有效期内,以及是否已被吊销(通过 CRL 或 OCSP)。
- 浏览器根据证书链逐级向上验证签名,直到找到内置在操作系统或浏览器中的受信任的根证书。
- 验证通过,浏览器确认服务器身份,然后使用证书内的公钥进行安全通信(如建立 TLS/SSL 加密连接)。
总结核心思想
证书签发流程的核心是信任转移,通过 CA 对申请者公钥的签名,将用户对 CA 的信任(因为根证书预装在浏览器中)转移给了证书持有者,只要 CA 的签名有效,用户就可以信任该证书所绑定的公钥确实属于证书上声明的实体。
补充:证书吊销
如果证书的私钥泄露、域名所有权变更或组织信息过期,CA 需要吊销该证书,吊销的信息会发布到 CRL或 OCSP 响应器中,以供依赖方在验证时查询,这是一个重要的安全保障机制,但并非所有客户端都会严格执行实时吊销检查。