HTTP/HTTPS

HTTPS和HTTP的区别

安全

HTTP是不安全的,数据以明文形式传输,容易被窃听和篡改。

HTTPS通过使用SSL/TLS加密数据传输,使得数据在传输过程中被加密,更难以被窃听和篡改。

SSL/TLS

加密通信:SSL/TLS使用加密算法对传输的数据进行加密,这样即使在网络上传输时,被拦截的数据也很难被解读。这种加密确保了通信内容的保密性。

身份验证:SSL/TLS允许服务器和客户端进行身份验证,确保通信的双方是合法的。服务器会提供数字证书,证明其身份的真实性,客户端可以验证证书的有效性。这防止了中间人攻击等安全威胁。

数据完整性:SSL/TLS通过使用消息认证码(MAC)或散列函数来验证数据的完整性,以确保在传输过程中数据没有被篡改或损坏。

密钥协商:SSL/TLS协议支持安全地协商加密通信所需的密钥,以保证通信双方都拥有相同的密钥而且不会被第三方获取。

端口

HTTP默认使用端口80进行通信。

HTTPS默认使用端口443进行通信。

证书

HTTPS需要服务器使用SSL证书,证明其身份的真实性。这些证书由可信任的第三方机构颁发,用于验证服务器的身份,并确保通信的安全性。

HTTP不需要证书,因为它不提供加密或验证服务器身份的功能

HTTPS的建立过程

1.客户端请求连接: 客户端(例如浏览器)向服务器发出HTTPS连接请求。这通常通过在URL中输入"https://"或者通过点击链接到一个HTTPS网页开始。

2.服务器证书发送: 服务器收到客户端的连接请求后,会将其SSL证书发送给客户端。该证书包含了服务器的公钥以及其他身份验证相关的信息,通常由受信任的证书颁发机构(CA)签发。

3.客户端验证服务器证书: 客户端收到服务器的证书后,会验证其有效性。验证包括检查证书的签发机构是否可信、证书是否在有效期内以及服务器的域名是否与证书中的域名匹配。如果验证失败,客户端会发出警告,连接可能会被中断。

4.客户端生成随机密钥: 如果服务器的证书验证通过,客户端会生成一个随机的对称密钥(会话密钥),用于加密通信数据。这个对称密钥通常使用服务器的公钥进行加密,以确保只有服务器能够解密它。

5.客户端发送加密密钥: 客户端使用服务器的公钥加密生成的会话密钥,并将其发送给服务器。

6.服务器解密会话密钥: 服务器接收到客户端发送的加密会话密钥后,使用自己的私钥进行解密,得到会话密钥。

7.建立加密通信: 现在,客户端和服务器都拥有相同的会话密钥。它们可以使用这个密钥来加密和解密通信数据,确保在传输过程中数据的机密性和完整性。

8.安全通信开始: 一旦加密通信建立,HTTPS连接就安全地建立了,客户端和服务器之间的通信可以在保护下进行。

注意:

1.CA证书存在的意义是为了防止中间人伪装成客户端眼里的服务端,服务端眼里的客户端。随意可以随意篡改数据,影响安全。

2.使用混合加密的原因是虽然非对称加密已经非常安全了,但是攻击者可以伪装成客户端窃取服务端的信息。因为服务端的公钥是公开的任何人都可以拿得到。

HTTP各版本的区别

HTTP/1.0 默认不支持持久连接,每次请求都需要建立新的 TCP 连接,请求完成后立即关闭连接。

HTTP/1.1 引入了持久连接机制,允许在单个连接上发送多个请求和响应,减少了连接建立和关闭的开销,提高了性能。

HTTP/2.0 引入了多路复用(Multiplexing)技术,允许在单个 TCP 连接上同时发送多个请求和响应,避免了 HTTP/1.0 中的队头阻塞(Head-of-Line Blocking)问题,提高了网络利用率和页面加载速度。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-02 21:16:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 21:16:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 21:16:02       82 阅读
  4. Python语言-面向对象

    2024-04-02 21:16:02       91 阅读

热门阅读

  1. 【力扣】80.删除有序数组中的重复项Ⅱ

    2024-04-02 21:16:02       32 阅读
  2. 在Linux或类Unix系统中获取帮助的命令

    2024-04-02 21:16:02       34 阅读
  3. Hibernate之Restrictions的用法

    2024-04-02 21:16:02       29 阅读
  4. Linux 内核中PHY子系统(网络):MDIO 总线

    2024-04-02 21:16:02       34 阅读
  5. P1719 最大加权矩形

    2024-04-02 21:16:02       33 阅读
  6. C++中string非成员函数重载

    2024-04-02 21:16:02       35 阅读