https 证书的构成
- 格式一般是crt文件
- 里面主要包含:
- 服务器端的公钥
- CA机构对这个公钥的签名
服务器端主要的文件
- key文件: 密钥
- crt文件: 证书(公钥+CA机构对此公钥的签名)
- csr文件: 证书请求文件(公钥+请求者相关信息+有效期)
证书制作流程
- 首先制作csr文件,此步骤产生key文件和csr文件,例:
openssl req -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr
- 使用acme http-01协议向CA机构(如:letsencrypt)请求证书(详细过程见 acme http-01协议),此步骤产生csr文件
- CA机构(如:letsencrypt),使用自己私钥对csr进行加密签名
https 认证过程
- 用户使用https请求服务器
- 服务器响应crt文件
- 用户使用CA的公钥 将crt文件中签名解密验签
证书链
- 既然使用CA的公钥对服务器crt文件验证,那么我们其实使用的是CA的crt文件(里面包含了公钥,和上层CA机构对这个公钥的签名)
- 那么我们也可以对CA的crt文件执行相同的验证签名的逻辑
- 直到验证到根证书
- 但是使用哪些根证书其实是用户自己说了算的(一般是操作系统说了算,如: windows,macos,linux,android,ios等等)