基础知识——HTTPS

你好,我是风一样的树懒,一个工作十多年的后端开发,曾就职京东、阿里等多家互联网头部企业。

点击下方👇关注公众号,带你一起复习后端技术,看看面试考点,补充积累技术知识,每天都为面试准备积累


HTTPS(HyperText Transfer Protocol Secure)是基于 HTTP 协议的安全版本,它通过 SSL/TLS(安全套接层/传输层安全协议)为数据传输提供加密保护。与 HTTP 相比,HTTPS 增强了数据的保密性、完整性和身份验证性,防止了数据在传输过程中被窃取或篡改,因此是进行敏感数据交换时不可或缺的一部分,尤其是在网上支付、登录和个人信息传输等场景中广泛应用。

HTTPS 与 HTTP 的区别

01
HTTPS与HTTP的区别


特性HTTPHTTPS

协议超文本传输协议安全的超文本传输协议

端口使用默认端口 80使用默认端口 443

加密方式无加密,数据以明文形式传输数据使用 SSL/TLS 协议加密传输
性能开销较低,不需要额外的加密和解密操作高,需要进行加密和解密处理,性能相对较差

安全性容易受到中间人攻击、数据窃取等威胁高,防止数据被篡改或监听


02
HTTPS的工作原理


HTTPS 基于 SSL 或 TLS 协议,通过以下几个步骤实现加密和身份验证:

客户端请求

客户端(如浏览器)发起 HTTPS 请求,目标 URL 的协议部分为 https://。

SSL/TLS 握手阶段

在建立安全连接之前,客户端和服务器需要通过 SSL/TLS 握手协议交换信息以建立安全通信。

  • 客户端发送请求:客户端发送一个请求,向服务器表明它希望进行安全通信,并发送其支持的加密算法和协议版本。

  • 服务器响应:服务器返回 SSL 证书,其中包含它的公钥、证书颁发机构(CA)的信息等,证明服务器身份的合法性。

  • 客户端验证证书:客户端验证服务器返回的 SSL 证书是否合法,检查证书是否过期、是否被受信任的 CA 颁发等。

  • 生成共享密钥:客户端和服务器通过公钥加密算法交换密钥,生成会话密钥(对称密钥)。这个会话密钥用于后续的加密通信。

  • 完成握手:双方确认密钥交换成功后,建立安全的加密连接,客户端和服务器开始加密通信。

数据传输阶段

在数据传输阶段,客户端和服务器之间的所有数据都通过建立的加密连接进行传输。此时,使用对称加密算法来加密数据,确保数据在传输过程中不会被窃取或篡改。

  • 对称加密:客户端和服务器使用会话密钥加密和解密数据。对称加密算法如 AES、DES、RC4 等效率较高,适用于大规模数据的传输。

  • 完整性校验:SSL/TLS 还会使用 消息认证码(MAC) 来校验数据是否在传输过程中被篡改。

会话结束

当数据传输完成后,客户端和服务器会关闭 SSL/TLS 会话。通常,客户端会向服务器发送一个“结束消息”以告知通信结束。


03
SSL/TLS 与 HTTPS 的关系


SSL(Secure Sockets Layer,安全套接层)是早期的加密协议,最初由 Netscape 提出,用于通过加密通信保护数据传输安全。虽然 SSL 已不再推荐使用,但它仍然是理解 TLS 的基础。

TLS(Transport Layer Security,传输层安全)是 SSL 的继任者,它对 SSL 协议进行了改进,增强了安全性和效率。现代的 HTTPS 实际上是通过 TLS 协议来保证加密和安全通信。


HTTPS 使用的加密和认证机制通常包括:

  • 公钥加密(加密和身份验证)

  • 对称加密(数据传输加密)

  • 消息认证码(MAC)(确保数据完整性)


04
HTTPS 的安全性


HTTPS 提供了以下几方面的安全保障:

数据加密:HTTPS 使用 加密算法(如 RSA、ECC 等)和 会话密钥(对称密钥)加密传输的数据,确保数据在传输过程中不被窃取或篡改。

身份认证:通过 SSL/TLS 证书 认证服务器身份,确保客户端与正确的服务器建立连接,防止 中间人攻击。

数据完整性:通过 消息认证码(MAC) 确保传输的数据没有被篡改,能够检验数据在传输过程中是否被修改。

防止中间人攻击:HTTPS 能有效防止 中间人攻击(MITM),即攻击者在客户端和服务器之间拦截并篡改通信数据。因为只有客户端和服务器拥有加密所需的密钥,其他第三方无法解密数据。


05
HTTPS 的性能问题


尽管 HTTPS 在安全性方面提供了显著优势,但由于加密和解密操作的存在,它的性能通常会稍逊于 HTTP。以下是 HTTPS 在性能方面的一些挑战:

  • TLS 握手延迟:建立 HTTPS 连接时需要进行 SSL/TLS 握手,这会增加一定的延迟,尤其是首次建立连接时。

  • 计算开销:加密和解密操作需要额外的计算资源,尤其是在大量并发请求的情况下,可能会对服务器性能产生影响。

  • 证书验证:客户端需要验证 SSL 证书的合法性,这也会增加一些延迟。

尽管如此,随着硬件性能的提升和优化技术的使用(如 HTTP/2 的引入),HTTPS 的性能问题已经逐渐得到缓解,现代网站和应用通常会选择使用 HTTPS 来保护通信安全。


06
如何启用 HTTPS


要启用 HTTPS,通常需要进行以下几个步骤:

  • 购买 SSL/TLS 证书:你需要从受信任的 证书颁发机构(CA)购买一个 SSL/TLS 证书,证书用于加密通信并验证服务器身份。

  • 安装证书:将购买的证书安装到 Web 服务器上(如 Apache、Nginx、Tomcat 等)。

  • 配置 Web 服务器:在 Web 服务器中启用 HTTPS,通常需要配置端口 443 和相关的证书文件。

  • 强制 HTTPS:为了提升安全性,通常会通过 HTTP 重定向或 HSTS(HTTP Strict Transport Security)将所有 HTTP 请求自动重定向到 HTTPS。


07
HTTP/2 与 HTTPS


HTTP/2 是 HTTP 协议的第二个主要版本,旨在提高 Web 性能。它与 HTTPS 配合使用,可以带来显著的性能提升。以下是 HTTP/2 与 HTTPS 的一些重要关系:

  • 要求 HTTPS:现代浏览器要求使用 HTTPS 来启用 HTTP/2,因此 HTTPS 成为使用 HTTP/2 的前提条件。

  • 性能优化:HTTP/2 提供了多路复用、头部压缩和流控制等特性,使得多个请求和响应可以通过同一个 TCP 连接并行处理,从而减少延迟和提高性能。


今天的内容就分享到这儿,喜欢的朋友可以关注,点赞。有什么不足的地方欢迎留言指出,您的关注是我前进的动力!

END


扫码关注

一起积累后端知识
不积跬步,无以至千里
不积小流,无以成江海

喜欢此内容的人还喜欢

谈谈id那些事(五)——美团的 Leaf 的ID生成


一个阿里二面面试官必问的问题


谈谈id那些事(三)——阿里巴巴的 TDDL的ID生成


分享面试:mysql数据库索引失效的情况


面试常被忽略的问题——内存区域划分