1、HTTP 与 HTTPS区别:安全、连接、端口号
2、HTTPS 解决:窃听风险、篡改风险、冒充风险
3、如何解决:混合加密、摘要算法、数字证书
4、建立连接:两次hello协议/算法/随机随,客户端先向服务器要公钥加密信息,服务器收到密文后,用自己私钥解密
一、HTTP 与 HTTPS 有哪些区别?
1)安全:
HTTP 超文本传输协议,明文传输,有安全风险。
HTTPS 解决不安全,在TCP 和 HTTP 网络层间加入SSL/TLS 安全协议,使报文能加密传输
2)连接:
HTTP :简单,TCP 三次握手,便可报文传输。
HTTPS :TCP 三次握手后,需进行SSL/TLS 握手过程,才加密报文传输
ps:HTTPS协议要向 CA(证书权威机构)申请数字证书,保证服务器身份可信
3)端口号: HTTP 80 ,HTTPS 443
二、HTTPS 解决了 HTTP 的哪些问题?
窃听风险:如通信链路。https+http解:交互信息无法窃取,但号会因为「自身忘记」而没。
篡改风险,如强制入垃圾广告,解:无法篡改通信内容,篡改就不能正常显示,但百度「竞价排名」依然可搜索垃圾广告
冒充风险,如冒充淘宝网站,用户钱没。解:身份证书校验,SSL/TLS 协议保证通信安全
3、HTTPS 是如何解决上面的三个风险的?
混合加密:方式实现信息的机密性,解决窃听风险
摘要算法:为数据生成独一无二「指纹」,校验数据完整性,解决篡改
数字证书:放入服务器公钥,解决冒充风险
1. 混合加密
1)非对称加密:只有交换「会话秘钥」时。用两个:公钥可任意分发。私钥保密,解决密钥交换问题但速度慢。
2)对称加密:通信过程全部用对称加密的「会话秘钥」方式加密明文数据。一个,运算速度快,必须保密,无法做到安全的密钥交换
2. 摘要算法
校验完整性:客户端发明文前,通过摘要算法算出明文「指纹」,「指纹 + 明文」一同发送
服务器解密,比较「指纹」和当前算出「指纹」相同,说明数据完整
3. 数字证书
客户端先向服务器要公钥加密信息,服务器收到密文后,用自己私钥解密
保证公钥不被篡改,CA (数字证书认证机构)将服务器公钥放在数字证书(由数字证书认证机构颁发,可信)中。数字证书工作流程:
4、HTTPS 是如何建立连接的?其间交互了什么?
前两步也就是 SSL/TLS 的建立过程(握手阶段)涉及四次通信,可见下图:
1)客户端先向服务器要公钥加密信息
2)双方协商生产「会话秘钥」进行加密通信
SSL/TLS 协议建立详细流程:
1. ClientHello
客户端向服务器发起加密通信请求,发送:1)支持SSL/TLS 协议版本、2)密码套件列表(如 RSA 加密算法)3)生产「会话秘钥」的随机数
2. SeverHello
收到客户端请求后响应:1)确认协议版本(如不支持,关闭加密通信) 2)确认密码套件列表 3)生产随机数 4)服务器数字证书
3.客户端回应
通过浏览器或操作系统中CA 公钥,确认数字证书真实性
从证书中取出公钥,用它加密报文,向服务器发送:1)随机数 2)加密算法变通知,用「会话秘钥」加密 3)握手结束通知,所有内容做个摘要,供服务端校验
ps:双方同时有三个随机数,算法各自生成本次通信的「会话秘钥」
4. 服务器最后回应
收到随机数算出「会话秘钥」。然后,向客户端发:1)加密算法变通知,用「会话秘钥」加密 2) 握手结束通知,所有内容做个摘要,供服务端校验
接下来,双方进入加密通信,用普通HTTP 协议,只不过用「会话秘钥」加密内容
https://mp.weixin.qq.com/s/bUy220-ect00N4gnO0697A











网友评论