- 图解公钥、私钥、证书 - DREAM.XIN - 博客园
- 浏览器如何验证HTTPS证书的合法性? - jianyong li的回答 - 知乎
- 一文看懂HTTPS、证书机构(CA)、证书、数字签名、私钥、公钥 - 简书
总结
- ca是为了防止网站公钥被中间人替换
- 网站公钥是为了发送随机密钥
- 随机密钥为了加密发送内容
第一步,验证证书(目的就是将网站公钥不被修改的送到客户端)
制作证书【ca私钥加密】
【这里ca私钥加密并不是为了隐藏数据(携带加密密文,并且携带有明文的证书(网站公钥)),而是证明证书没有被篡改】
证书内容包含网站公钥【注意区分ca公钥】
网站生成证书要通过ca机构,
生成一个网站公钥 和 一个网站私钥。
对网站公钥签名,使用ca机构私钥加密 = 数字证书
【就是给客户端一个原版的,一个原版加密的】
验证证书【ca公钥解密摘要,验证证书】【获得网站公钥】
原版加密的用ca公钥解密 得到解密的 证书内容(包含网站公钥)的摘要。
对比证书摘要相等,说明证书没问题
从证书中获得网站公钥
第二步,数据传输
使用网站公钥 加密 一个 对称密钥,发送给服务器。
服务获取 对称密钥。
开始使用对称密钥 通信。(AES)
HTTPS必须在每次请求中都要先在SSL层进行握手传递秘钥吗? - 知乎
浏览器可以session ID为单位临时保存加密key等安全参数。
参数
http自动跳转https
会话恢复
省去重新握手
sessionid存放在客户端(jwt)
ocsp
服务器校验证书(是否过期)