BeWithYou

胡搞的技术博客

HTTP知识(3)-HTTPS


HTTP知识(3)-HTTPS

HTTP是不安全的

  1. 通信使用明文,内容可能会被窃听
  2. 不验证通信方的身份,因此可能遭遇伪装
  3. 无法保证报文的完整性,因此可能会被篡改

HTTP 劫持方式

  1. 篡改HTTP响应
  2. 构造HTTP响应
  3. 3xx跳转

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

HTTPS是身披SSL外壳的HTTP

HTTPS是“HTTP协议”和“SSL/TLS协议”的组合。可理解为“HTTP over SSL”,“HTTP over TLS”。

SSL/TLS

  • SSL(Secure Sockets Layer),中文名称“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。主要是为解决HTTP协议传输带来的安全问题。

  • 到了1999年,SSL 因为应用广泛,已经成为互联网上的事实标准。IETF 就在那年把 SSL 标准化。标准化之后的名称改为 TLS(Transport Layer Security),中文叫做“传输层安全协议”。

  • 可以认为SSL和TLS是同一个协议的不同阶段。

对比图

  • 通常,HTTP直接用TCP通信。当使用SSL时,先和SSL通信,再由SSL和TCP通信。

身份认证

  • 借助数字证书对网站进行身份认证,确保用户访问的是真实的目标网站

数据加密

  • 安全可靠的秘钥交换算法,确保第三方无法获取用于加密的对称秘钥
  • 高强度的对称加密算法,确保传输的数据不会被破解

HTTPS的加密

  • 非对称加密 公钥加密,私钥解密,安全但是对服务器性能会有影响
  • 对称加密 秘钥同时加密解密 不够安全
  • HTTPS使用对称加密来加密通信数据,但是对称加密的秘钥使用非对称加密来传输
  • 折中的方法使得安全性和性能都得到照顾

HTTPS数据通信流程

通信流程

  1. Client Hello

    包含支持的SSL协议版本、加密方法、hash方法

  2. Server Hello

    包含确认使用的SSL协议版本、确认使用的加密方法、确认使用的hash方法

  3. Certifcate

    Certificate报文由服务端发送,包含公开秘钥证书。

  4. Client Key Exchange, Change Cipher Spec

    • 一个随机数(之后对称加密通信时使用的密钥)。该随机数用服务器公钥加密,防止被窃听。
    • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
    • 以上内容的hash值,用来供服务器校验。
  5. Change Cipher Spec

    • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
    • 以上内容的hash值,用来供客户端校验。
  6. 应用数据交互

    发送HTTP数据了,用的是商定好的对称加密秘钥

证书认证

  1. CRL机制,本地查询,更新量太大已停用
  2. OCSP机制,客户端主动查询OCSP服务器,由OCSP服务器建立与CA证书库的链接查询后返回给用户
  3. OCSP加速,由WEB服务器端替浏览器完成OCSP流程,并将结果附加到Certificate响应中,加快速度

HTTPS速度慢吗

  1. 使用SSL时处理速度会变慢
  2. 通信慢,因为出去TCP链接发送HTTP请求外,还需要进行SSL通信。
  3. 机器处理加密导致性能问题,可由附加的硬件替代软件来解决。
回到顶部