HTTPS基础

HTTPS是在HTTP和TCP之间添加了安全传输层,目前使用TLS作为安全传输层

HTTPS需要解决的问题

  • 服务器认证(客户端知道他们是在与真正的而不是伪造的服务器通话)
  • 客户端认证(服务器知道他们是在与真正的而不是伪造的客户端通话)
  • 完整性(客户端和服务器的数据不会被修改,中间人攻击,简单的方法是提供传输数据的md5,但是md5依旧可以被重新计算)
  • 加密(客户端和服务器的对话是私密的,无需担心被窃听)
  • 效率(一个足够快的算法,以便低端的客户端和服务器使用)
  • 普适性(基本上所有的客户端和服务器都支持这些协议)
  • 管理的可扩展性(在任何地方的任何人都可以立即进行安全通信)
  • 适应性(能够支持当前最知名的安全方法)
  • 在社会上的可行性(满足社会的政治文化需要)

HTTPS提供的解决方案

  • 通过可证明组织真实性的 EV SSL证书 可以证明服务器是否规范
  • 使用客户端证书确认客户端
  • 应用层在发送数据时通过附加MAC(Message Authentication Code)的报文摘要来保证数据完整性
  • HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制,若密钥能够实现安全转换,那么有可能会考虑仅使用公开密钥来通信。但是公开密钥加密和共享密钥加密相比,其处理速度要慢。可以通过公开密钥建立一个安全的通信,然后传递共享密钥,降低资源的消耗。
  • HTTPS在传输的时候需要进行SSL通信会增加网络负载,同时数据的加密和解密也会增加CPU和内存的消耗,因此HTTPS会比HTTP效率低

SSL通信

下图展示SSL通信的简单过程

ssl_shake.png

  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的保护
  11. 应用层协议通信,客户端发送HTTP请求,服务器发送HTTP应答
  12. 客户端断开连接。断开连接时,发送 close_notify 报文

参考资料

  1. HTTP权威指南
  2. 图解HTTP
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容