HTTPS和HTTP的区别,连接过程

129 阅读2分钟

HTTPS和HTTP的区别?解决了什么问题?

HTTPS在HTTP基础上添加了SSL/TSL层, 完善了HTTP存在的一些问题

  • 窃听风险
    • http的数据直接明文放在body中, 如果有第三方从连接中偷偷代理转发,获取了重要的信息,发送方和接收方都不知情, 这也叫做中间人攻击,为了避免这种严重的问题,https使用TLS记录协议, 对数据进行加密, 即使被偷听了,没有会话密钥也无法得知消息内容
  • 篡改风险
    • A想向B转账100元, B是很高明的黑客,偷偷将100修改为100W,在http协议中,的确存在这种风险,因为h接收端无法判断当前消息是否经过了第三方修改,那么https对针对此问题, 使用摘要算法对消息生成hash,并将消息和hash一起加密发送
  • 冒充风险
    • 要是有人直接把“消息+hash”全都替换了呢? 也就是这条消息根本不是真实的服务器发送的,https采用证书机制来解决,将自己的公钥和一些基本信息注册到CA机构,CA机构通过自己的私钥进行加密后, 颁发一个证书,浏览器要访问jd.com时就要先请求jd.com的证书,浏览器本地使用CA的公钥解密后,验证是否是真实的京东网站,再进行下一步的操作

HTTPS的连接过程

三次握手-- client hello -- server hello-- server certificate-- client pre-master exchange-- 使用会话密钥通信,相互发送所有握手数据摘要 https连接过程

HTTPS数据加密过程

1.首先对数据进行分片,然后压缩
2.对分片压缩数据加上消息认证码(MAC,通过摘要算法生成,保证数据完整性)
3.最后,上述经过加密的数据再加上由数据类型、版本号、压缩后的长度组成的报头就是最终的报文数据。