https原理介绍
我们都知道HTTP并非是安全传输,而HTTPS是相对安全的,在传输数据之前,需要客户端和服务进行一次握手,在握手过程中确立双方加密传输数据的密码信息,然后在后续通信过程中就使用协商密钥进行对称加密通信。具体过程见下图:
1)客户端发起HTTPS请求
即用户在浏览器里输入一个https网址连接到服务器端口。
2)服务端初步响应
采用HTTPS协议的服务器必须要有一套数字证书,这套证书其实就是一对公钥和私钥,可以想象成一把钥匙和一个锁头,只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。将证书发回给浏览器,证书包含证书的颁发机构、过期时间等。
3)客户端解析证书
客户端首先会验证证书是否有效,比如颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致、过期时间等,如果发现异常,则提示证书存在问题,如果证书没有问题,那么客户端就生成一个随机值,然后用证书对该随机值进行加密。
4)客户端发送加密信息
客户端发送的是用证书加密后的随机值。
5) 服务器解密信息
服务端用私钥解密后,得到了客户端传过来的随机值,然后把内容通过该值进行对称加密(所谓对称加密就是将信息和私钥通过某种算法混合在一起)。
6)服务器发送加密后的信息
服务器发送的是服务端用随机值进行对称加密后的信息。
7) 客户端解密信息
客户端用之前生成的随机值解密服务端传过来的信息,客户端就获取了解密后的内容。