HTTPS工作原理
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)
以安全为目标的HTTP通道,即HTTP的安全版本
HTTPS = HTTP + SSL/TSL
HTTPS的握手过程其实就是SSL/TSL的握手过程
【1】HTTP的安全缺陷
HTTP作为传输协议本身是明文传输,即没有任何的安全措施
例:用户在百度浏览器搜索一个关键字“华为手机”,则在网络上的其他人完全可以劫取这个信息,然后电话骚扰……
网络上的“这些人”指的就是网络上的一些网路节点,这些节点是数据传输必须要经过的一些节点
例:wifi热点、路由器、防火墙、反向代理、缓存服务器……
故HTTP协议是不安全的
HTTPS则能够有效防御信息劫取
【2】HTTPS的三个功能
- 内容加密:传输的数据都是以加密的形式传输的,中间者无法直接查看原始内容
- 身份认证:保证用户访问的是目标服务器,即便被DNS劫持到了第三方站点,也会给用户报警
- 数据完整性:防止内容被第三方冒充/篡改
【3】HTTPS工作流程
- 客户端发送HTTPS请求
在浏览器上输入一个https的网址,然后连接到服务端的443端口。过程中,客户端会发送一个密文簇给服务器,包含了客户端支持的加密算法清单
客户端告诉服务器,我这里支持哪些加密算法
- 服务端配置
采用HTTPS协议的服务器必须要有一套数字证书(可以直接制作,也可以向组织申请)
这套证书其实就是一对公钥和私钥
- 公钥:就是一把锁头
- 私钥:就是一把钥匙
公钥用于给信息加锁,而只有持有这把锁密钥(钥匙)的才可以看到里面的内容
- 传送证书
服务端将证书传给客户端
证书中包含了:公钥,证书的机构信息、过期信息……
- 客户端解析证书
这部分的工作由客户端的TSL完成,验证证书是否有效
- 无效:弹出警告框
- 有效:生成一段随机数,用公钥进行加密
加密的随机数用于握手
- 传送加密信息
将加密后的随机值发送给服务端
- 服务端解密
- 服务端利用私钥解密,得到那个随机值
--------------------------非对称加密结束----------------------------
- 服务端利用这个随机数对待传输的信息进程对称加密
- 传输加密后的信息
这部分是服务端利用随机数对信息进行的加密,可以在客户端解密
–
8. 客户端解密信息
客户端利用之前生成的随机数解密服务端发送过来的信息,于是获取了解密后的内容
--------------------------对称加密结束----------------------------