HTTPS

HTTPS简介

截屏2021-02-15 下午12.10.01

SSL(Security Sockets Layer,安全套接层)

  • 为网络通信提供安全及数据完整性的一种安全协议。
  • 是操作系统对外的API,SSL3.0后更名为TLS
  • 采用身份验证和数据加密保证网络通信的安全和数据的完整性。

HTTPS数据传输流程

  1. 浏览器将支持的加密算法信息发送给服务器

  2. 服务端把自己的信息以数字证书的形式返回给客户端(证书内容有密钥公钥,网站地址,证书颁发机构,失效日期等)。

    • 证书中有一个公钥来加密信息,私钥由服务器持有。证书中包含发布证书的CA机构,证书的有效期,公钥,证书的所有者,签名等
  3. 验证证书的合法性

    • 客户端收到服务器的响应后会先验证证书的合法性(证书中包含的地址与正在访问的地址是否一致,证书是否过期)。
  4. 生成随机密码(RSA签名)

    • 如果验证通过,或用户接受了不受信任的证书,浏览器就会生成一个随机的对称密钥(session key)并用公钥加密,让服务端用私钥解密,解密后就用这个对称密钥进行传输了,并且能够说明服务端确实是私钥的持有者。
  5. 生成对称加密算法

    • 验证完服务端身份后,客户端生成一个对称加密的算法和对应密钥,以公钥加密之后发送给服务端。此时被黑客截获也没用,因为只有服务端的私钥才可以对其进行解密。之后客户端与服务端可以用这个对称加密算法来加密和解密通信内容了。

HTTP和HTTPS区别

  • HTTPS需要到CA申请证书,HTTP不需要
  • HTTPS密文传输,HTTP明文传输
  • 连接方式不同,HTTPS默认使用443端口,HTTP默认使用80端口
  • HTTPS = HTTP + 加密 + 认证 + 完整性保护,较HTTP安全
    • HTTP是无状态的,HTTPS是HTTP + SSL,SSL是有状态的

HTTPS真的很安全吗

  • 浏览器默认填充http:// ,请求需要进行跳转,有被劫持的风险
    • 可以使用HSTS(HTTP Strict Transport Security)优化
      • 并未成为主流