HTTPS协议

142 阅读2分钟

HTTPS 协议介绍

HTTPS 即超文本传输安全协议,经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包

HTTPS = HTTP + TLS/SSL

TLS: 安全传输层协议

SSL: 安全套接层

HTTPS的主要作用是在不安全的网络上创建一个安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的防护。

HTTPS的信任基于预先安装在操作系统中的证书颁发机构(CA)。因此,与一个网站之间的HTTPS连线仅在这些情况下可被信任:

  • 浏览器正确地实现了HTTPS且操作系统中安装了正确且受信任的证书颁发机构;
  • 证书颁发机构仅信任合法的网站;
  • 被访问的网站提供了一个有效的证书,也就是说它是一个由操作系统信任的证书颁发机构签发的(大部- 分浏览器会对无效的证书发出警告);
  • 该证书正确地验证了被访问的网站(例如,访问 example.com 时收到了签发给 example.com 而不是其它域名的证书);
  • 此协议的加密层(SSL/TLS)能够有效地提供认证和高强度的加密。

HTTPS 协议原理

证书申请流程

image.png

HTTPS 请求流程

image.png

  1. 服务器上传自己的公钥、域名、公司信息等信息给 CA 认证机构进行认证,认证通过后获取签名证书,该证书一般可以被客户端操作系统或浏览器保存的机构公钥解密。
  2. 客户端发起 HTTPS 请求,服务端响应请求并将签名证书返回给客户端
  3. 客户端通过操作系统存储的机构公钥解密签名得到证书的 hash 值,并对其进行验证,对比请求域名,若有异常则给出警告。若证书没有问题,客户端就会从服务器证书中取出服务器的公钥 A。
  4. 客户端生成一个随机的 session key,并使用公钥 A 将其加密,将其发送给服务器,服务器用私钥解密获得 session key,作为后续对称加密的密钥。至此,服务端和客户端建立了安全的连接。
  5. 服务端使用 session key 对报文进行对称加密传输给客户端。客户端使用相同的密钥 (随机码 KEY)解密数据。之后双方使用对称加密愉快地传输所有数据。

参考

超文本传输安全协议

HTTPS 详解一:附带最精美详尽的 HTTPS 原理图

彻底搞懂HTTPS的加密原理

数字证书、签名到底是什么