Appearance
公钥、私钥与数字证书:从非对称密码到 HTTPS
HTTPS 通过 TLS 协议确认通信对象,并保护传输中的数据。理解这一过程,可以先记住三件事:私钥由持有者保管,公钥供其他人验证,证书把公钥与域名等身份信息绑定起来。
对称密码与非对称密码
| 类型 | 密钥关系 | 常见用途 | 示例 |
|---|---|---|---|
| 对称密码 | 通信双方持有用于加解密的共享密钥 | 高效保护大量业务数据 | AES、SM4 |
| 非对称密码 | 使用相互关联的公钥与私钥 | 用于身份认证、数字签名等操作 | RSA、ECC、SM2 |
申请证书时,常见的算法选项有 RSA、ECC 和 SM2。选择时应确认目标服务器和客户端支持相应算法。
HTTPS 还会使用 SHA-256、SM3 等杂凑算法生成数据摘要,配合数字签名、消息认证和密钥派生。具体用途见什么是杂凑(哈希)算法?。
公钥与私钥分别做什么?
私钥是持有者执行签名或相应解密操作所需的秘密材料,应保存在受控服务器、密钥库或密码设备中。公钥可提供给其他人,用于验证签名或执行相应的公钥运算。
两种常见操作的方向如下:
- 数字签名:持有者用私钥对数据生成签名,接收方用公钥验证来源与完整性。签名采用专用算法及编码规则。
- 公钥加密:在支持该用途的算法与方案中,发送方用接收方公钥加密,接收方用对应私钥解密。
密钥协商则让双方通过各自的密钥材料计算共享秘密,再派生会话密钥。具体运算由协议实现,日常证书部署无需手工完成。
数字证书绑定了哪些信息?
网站使用的 X.509 证书是一份由签发者数字签名的数据,包含网站公钥及其适用范围。客户端通过验证证书链和域名,判断是否接受这份绑定。
证书用于身份绑定,TLS 用于保护连接。网站内容和经营行为的可信度需要另行判断。
| 字段 | 阅读时关注什么 |
|---|---|
| Subject Alternative Name(SAN) | 证书覆盖的域名或 IP 地址;HTTPS 域名匹配重点检查此项 |
| Subject / Issuer | 证书主体与签发者名称;组织信息随证书类型而异 |
| Subject Public Key Info | 主体公钥、算法与参数 |
| Validity | 生效时间与到期时间 |
| Serial Number | CA 分配的序列号,应与签发者一起用于识别证书 |
| Key Usage / Extended Key Usage | 允许的密钥操作及证书用途,例如服务器认证 |
| CA 签名 | 由签发者私钥生成,供客户端用签发者公钥验证 |
证书中保存的是公钥。网站运行所需的匹配私钥单独保存;PFX 等交付容器可以把两者打包在一起,具体见证书格式指南。
证书查看器还会计算 SHA-256 等指纹,方便核对具体证书。比较时应使用相同的摘要算法。
CSR、证书和私钥如何关联?
- 在 KeyManager、服务器或密码设备中生成密钥对,保留私钥。
- 使用公钥及申请信息生成 CSR,并用私钥签名,提交申请。
- CA 按产品要求完成域名控制权、组织等验证后签发证书。
- 将签发证书与原私钥、配套中间链安装到提供 HTTPS 的入口。
CSR 是证书签名请求,包含公钥与申请信息,不包含私钥。CA 审核后确定最终证书中的身份与用途。私钥留在受控环境中;申请步骤见 KeyManager 申请指南。
站点证书、中间证书与根证书
| 名称 | 所处位置与作用 | 通常由谁维护 |
|---|---|---|
| 站点证书(叶证书) | 绑定业务域名与网站公钥,用于服务器身份认证 | 网站或 HTTPS 入口管理员 |
| 中间证书(ICA 证书) | 授权中间 CA 签发下级证书,连接站点证书与上级 CA | CA 提供;服务器管理员部署适用中间链 |
| 根证书 | 通常是自签名 CA 证书,用于分发信任锚信息 | 操作系统、浏览器、运行时或组织的信任库管理员 |
根的信任来自客户端预先接受的信任库及策略。私有 PKI 环境通常由组织受控分发自己的根;公共网站依赖客户端已接受的公共根体系。
链上可以有多个中间 CA。客户端如何选取并验证这条路径,见 SSL/TLS 信任链的构建与验证。
它们如何参与一次 HTTPS 连接?
以常规 TLS 1.3 证书认证握手为例:
- 协商并建立握手密钥:客户端与服务器在 ClientHello、ServerHello 中协商参数并交换临时公钥,派生保护后续握手消息的密钥。客户端通常还发送 SNI 帮助服务器选择站点。
- 服务器证明身份:在加密保护下发送站点证书和中间链,并用匹配私钥生成握手签名,再发送 Finished 消息。
- 客户端验证并完成握手:检查证书路径、访问域名、用途及握手签名,验证 Finished;检查通过后完成自身的握手消息。
- 保护业务通信:使用单独派生的应用流量密钥,以对称认证加密保护后续请求与响应。
CA 的签名证明证书的签发关系;服务器的握手签名证明它持有匹配私钥,并将身份绑定到本次连接。
身份认证与业务数据加密由不同机制协作完成。更详细的算法分工见 RSA、ECC 与 SM1–SM4,临时密钥的意义见前向保密。
