突然间有点忘了https中的交互过程了,年纪大了,总是容易忘记。。。
https握手过程
- 客户端发起HTTPS请求
- 服务端传送配置的证书:证书的本质就是服务器自己的公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等,该公钥的目的是为了和服务器端之间协商对称秘钥对使用,证书可以自己生成,但是自己生成的证书如果是通过浏览器来请求,各个浏览器是不会认的,所以需要向官方的CA机构申请一个合法的证书,其实就是提供一个公钥以及申请者信息给机构,机构会生成一个合法证书,这个证书包含了一个机构生成的签名;
- 客户端解析验证证书合法性:客户端的TLS来完成,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。比如浏览器会持有一些较著名的公认的机构的公钥,利用这个公钥可以去验证服务器下发证书里边签名的正确性,这样来完成证书的验证。如果证书没有问题,那么就生成一个随机值。然后用证书对该随机值进行加密。
- 协商数据传输密钥:这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。服务器与客户端之间的数据传输过程是采用对称加密方式加密的。
- 正常的加密数据交互
网友评论