HTTPS 就是在安全的传输层上发送 HTTP。HTTPS 在将 HTTP 报文发送给 TCP 之前,先将其内容发送给一个安全层 SSL/TLS,对其进行加密。

在 HTTPS 中,客户端打开一条到服务器端口 443 的连接。一旦建立了 TCP 连接,客户端和服务器就会初始化 SSL 层,对加密参数进行沟通,并交换密钥。握手完成后,SSL 的初始化就完成了,客户端就可以将请求报文发送给安全层对其进行加密,接着发送给 TCP 进行发送。

HTTP 缺点

无连接: HTTP/1.1 之前每次请求都要通过 TCP 建立连接断开连接,HTTP/1.1 实现了持久连接

无状态: Cookie 技术和持久连接解决

明文传输: 不安全

HTTPS 特点

  • 内容加密:采用混合加密技术,中间者无法直接查看明文内容
  • 身份认证:通过认证机构的证书进行数字签名
  • 完整性:通过摘要算法防止内容篡改

常见的面试题

HTTP 与 HTTPS 的区别?

  • HTTPS 协议握手阶段比较耗时。
  • HTTPS 协议要申请证书到 CA(认证机构),需要一定经济成本。HTTP 不需要。
  • HTTP 明文传输,不安全。HTTP 加上 SSL 层,更加安全

HTTPS 传输过程?

客户端发起 HTTPS 请求,服务端返回证书,客户端对证书验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。

为什么需要证书?

防止中间人攻击,验证服务器身份

如何防止篡改?

证书是公开的,虽然中间人可以拿到证书,但私钥无法获取,公钥无法推断出私钥,所以篡改后不能用私钥加密,强行加密客户也无法解密,强行修改内容,会导致证书内容与签名中的指纹不匹配。

参考链接