图解HTTP学习(四)---HTTPS

HTTP的缺点

  1. 通信使用明文(不加密),内容可能会被窃听
  2. 不验证通信方的身份,因此有可能遭遇伪装:
    • 无法确定请求发送至目标的web服务器是否是按真实意图返回响应的那台服务器。有可能是已伪装的web服务器
    • 无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端。有可能是已伪装的客户端
    • 无法确定正在通信的对方是否具备访问权限
    • 无法判定请求来自何方,出自谁手
    • 即使是无意义的请求也会照单全收,无法阻止海量请求下的DoS攻击
  3. 无法证明报文的完整性,所以有可能已遭篡改

HTTPS=HTTP+加密+认证+完整性保护

HTTPS是身披SSL外壳的HTTP,将HTTP的通信接口部分用SSL和TLS协议代替。
通常HTTP直接和TCP通信,当使用SSL,变成先和SSL通信再由SSl和TCP通信。(SSL是独立于HTTP的协议)
在这里插入图片描述

加密

HTTPS采用公开密钥和共享密钥的混合加密机制

  1. 服务器将自己的公开密钥登记值数字证书认证机构
  2. 数字证书认证机构用自己的私有密钥向服务器的公开密钥部署数字签名并颁发公钥证书。数字证书认证机构的公开密钥以事先植入到浏览器中。
  3. 建立通信后,服务器端向客户端发送公钥证书,客户端使用浏览器中数字证书认证机构事先植入的公开密钥解密公钥证书;获得服务器的公开密钥和公钥证书上的数字签名,并向数字证书认证机构验证获得的数字签名以确认服务器公开密钥的真实性。
  4. 客户端使用服务器的公开密钥对报文加密后发送
  5. 服务器用私有密钥对报文解密
    在这里插入图片描述

HTTPS安全通信机制

步骤图
在这里插入图片描述

  1. 客户端通过发送Client Hello报文开始SSL通信,报文中包含客户端支持的SSL的指定版本,加密组件列表(所使用的加密算法及密钥长度)
  2. 服务器可进行SSL通信时,会以Server Hello报文作为应答。和客户端一样,在报文中包含SSL版本以及加密组件(从接收到的客户端加密组件内筛选出来的)
  3. 之后服务器发送Certificate报文。包含公开密钥证书
  4. 最后服务器发送Server Hello Done 报文通知客户端,最初阶段的SSL握手协商部分结束
  5. SSL握手协商结束后,客户端以Client Key Exchange报文作为回应。报文包含通信加密中的Pre-master secret的随机密码串。且该报文中已用步骤3中获得的公开密钥进行加密
  6. 客户端继续发送Change Cipher Spec报文,提示服务器在之后的通信会采用Pre-master secret密钥进行加密
  7. 客户端再发送Finished报文,包含至今全部报文的整体校验值。此次握手协商能否成功,将以服务器能否正确解密该报文作为判定标准
  8. 服务器同样发送Change Cipher Spec报文
  9. 服务器同样发送Finished报文
  10. 在服务器和客户端交换万Finished报文后,SSL连接建立完成。此时的通信已受到SSL的保护。并可以开始应用层协议的通信,即发送HTTP请求。
  11. 服务器在收到HTTP请求后,返回HTTP响应
  12. 最后由客户端发送close_notify报文断开连接。(在这之后还有TCP/IP的四次挥手来关闭TCP通信)

流程图
在这里插入图片描述
HTTPS缺点
使用HTTPS会导致处理速度变慢。
因为HTTPS需要做服务器、客户端双方加密及解密处理,因此会消耗CPU和内存等硬件资源。
和HTTP通信相比,多了SSL通信部分消耗网络资源;另外SSL通信部分,又因为要对通信进行处理,所以时间上又延长了。
可以使用SSL加速器硬件来改善此问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值