简单的了解HTTPS

关于HTTP的不足

  • 通信使用明文不加密,内容可能被窃听

    • 由于HTTP本身不具备加密功能,所以无法做到对通信整体(HTTP协议通信请求和响应内容)加密,很容易被获取
    • 为了防止被窃听,普遍做法是加密
      • 通信加密:HTTP协议中没有加密机制,但可以通过和SSL(安全套接字)或TSL(安全传输协议)的组合使用,加密HTTP的通信内容,与SSL组合使用的HTTP被称为HTTPS
      • 内容加密:HTTP协议中没有加密机制,对HTTP协议内容本身加密,但是做到有效加密的话,客户端和服务器端必须由相应的解密机制
  • 不验证通信方的身份,因此有可能遭遇伪装

    • HTTP协议实现非常简单,只要有请求就会有响应,因此存在很多问题
      • 无法确定请求发送至的目标服务器是你希望的服务器,可能是伪装的服务器
      • 无法确定响应返回到的客户端就是你希望的客户端,可能是伪装的客户端
      • 无法确定正在通信的对方是具备访问权限,也许有的接口是指定给特殊用户的
    • 虽然HTTP协议无法确定,但是SSL可以,SSL有一套证书机制
      • 证书由三方机构颁发,以证明服务器和客户端真实存在
      • 客户端和服务器在开始通信前可以验证彼此证书
  • 无法证明body的完整性,所以可能遭篡改

    • 客户端和服务器接在发送或收到的请求或响应过程中,可能会被攻击,内容会被篡改
    • 为了防止篡改,有必要使用HTTPS,SSL提供认证和加密处理及摘要功能。

HTTPS

  • 概念:把添加了加密和认证机制的HTTP称为HTTPS
  • HTTPS并不是一种协议,只是在HTTP通信接口部分用SSL和TSL协议代替而已
  • 通常HTTP直接和TCP通信,当使用HTTPS时,变成了先和SSL通信,再由SSL和TCP通信
  • SSL是独立于HTTP协议的

HTTPS的加密

在服务器端有一个安全证书,存储在受保护的空间内
1、客户端发了一个https请求
2、服务器会先把这个证书传给app,app选择安装或者不安装,如果安装,所有的请求都是在这个证书加密的,如果不安装,就没向服务器发送请求
3、请求数据是通过公钥加密的,在服务器端有个私钥进行解密,当服务器收到公钥加密的请求时,会用私钥解密

猜你喜欢

转载自blog.csdn.net/hejiasu/article/details/80937820