HTTPS要使客户端与服务器端的通信过程得到安全保证,必须使用的对称加密算法,但是协商对称加密算法的过程,需要使用非对称加密算法来保证安全,然而直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通信安全问题。
1,客户端发起HTTPS请求这个没什么好说的,就是用户在浏览器里输入一个HTTPS网址,然后连接到服务端的443端口。这时候客户端 会生成一个随机数A,把随机数A、自己支持的 SSL 版本号以及加密算法等这些信息告诉服务器 。
2,服务器 知道这些信息后,然后确认一下双方的加密算法,然后服务端也生成一个随机数 B ,并将随机数 B 和 CA 颁发给自己的证书一同返回给客户端 这套证书其实就是一对公钥和私钥。同时包含了很多信息,如证书的颁发机构,过期时间等等 。
3,客户端解析证书。这部分工作是由客户端的SSL/TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警示框,提示证书存在的问题。如果证书没有问题,那么就生成一个随机值C。然后用证书(也就是公钥)对这个随机值进行加密。
4,服务端 得到加密后的随机数C,然后利用私钥进行解密,得到真正的随机数C。服务端用私钥解密后,得到了客户端传过来的随机值,最后,客户端和服务端都有随机数1、随机数2、随机数3,然后双方利用这三个随机数生成一个对话密钥。之后传输内容就是利用对话密钥来进行加解密了。这时就是利用了对称加密。
5,客户端 通知服务端 ,指明后面的通讯用对话密钥来完成,同时通知服务器客户端的握手过程结束。服务端通知客户端,指明后面的通讯用对话密钥来完成,同时通知客户端服务器的握手过程结束
6,传输加密后的信息这部分信息就是服务端用私钥加密后的信息,可以在客户端用随机值解密还原。
7,客户端解密信息客户端用之前生产的私钥解密服务端传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策
https://mp.weixin.qq.com/s/a5PUDh6PWL3v462-uyGMqA
网友评论