信任是怎么建立的
浏览器内置一批根证书(信任锚)。服务器出示的证书由某个中间 CA 签发,中间 CA 又由根 CA 签发。浏览器沿着这条链一路验到信任的根,才算可信。
证书链
| 角色 | 说明 |
|---|---|
| 根证书 | 自签名,预置在系统 / 浏览器,绝不外发私钥 |
| 中间证书 | 根签发,用来签服务器证书,保护根私钥 |
| 服务器证书 | 你的域名证书,由中间 CA 签发 |
两个常见部署错误
- 只发服务器证书:浏览器凑不齐链会报「不受信任」,必须连同中间证书一起下发;
- 链顺序错:服务器应把叶子证书放最前、中间证书随后,顺序错有的客户端不认。
验证
用 openssl s_client -showcerts 看服务端实际下发的链是否完整。证书内容本身是 ASN.1 结构,也可做 Base64 观察。
动手试试
观察 Base64 编码:Base64 编解码。