一文搞懂HTTP与HTTPS

发布时间:2025-12-10 11:42:51 浏览次数:2

HTTP与HTTPs

  • 1. 基本概念
    • 1.1 HTTP
    • 1.2 HTTPs
  • 2. 非对称加密+对称加密方案
    • 2.1 实现方案
    • 2.2 中间人攻击
  • 3. 基于SSL的实现
    • 3.1 实现方案
    • 3.2 HTTPs的密钥协商

1. 基本概念

1.1 HTTP

超文本传输协议(HTTP,HyperText Transfer Protocol),是客户端浏览器或其他程序与Web服务器之间的应用层通信协议,一般使用80端口。

HTTP请求过程中,客户端与服务器之间没有任何身份确认的过程,数据全部明文传输,易遭到黑客的攻击。黑客可“劫持”客户端发出的请求,并冒充服务器返回任意信息给客户端,且不被客户端察觉。

HTTP传输面临的风险包括:

  • 截取:通信内容被获取
  • 篡改:通信内容被修改
  • 伪造:非法实体冒充合法实体参与通信

1.2 HTTPs

安全超文本传输协议(HTTPS,Hypertext Transfer Protocol Secure),由HTTP+SSL/TLS构建的可进行加密传输、身份认证的网络协议,一般使用443端口

安全套接字层(SSL,Secure Socket Layer)/传输层安全(TLS,Transport Layer Security)协议位于应用层和TCP层之间。应用层数据传递给SSL/TLS实现传输加密与身份认证,需要到CA申请证书。

2. 非对称加密+对称加密方案

2.1 实现方案

为了方防止通信内容被获取,可对传输内容进行加密。直接使用对称加密算法,存在密钥传输与管理上的问题,一般采用对称加密方式对通信内容进行加密,而采用非对称加密方式实现对称加密的密钥传递

  • 客户端:发起HTTPS请求
  • 服务器:生成公钥/私钥对 Pu/Pr,并把公钥发给客户端
  • 客户端:生成随机数K作为会话密钥,用收到的公钥Pu加密后发送给服务器
  • 服务器:使用私钥Pr解密,得到会话密钥K

客户端和服务器通过对称加密算法,使用会话密钥K对通信数据进行加密

  • 客户端向服务器端发起连接请求。
  • 服务器端生成一个RSA密钥对,并将公钥发送给客户端。
  • 客户端通过随机数生成器生成一个预备主密钥,用服务器的公钥加密并发送给服务器端。
  • 服务器解密预备主密钥,假如能够正确解密,则说明客户端和服务器端共同协商出一个预备主密钥。

(2)DH 算法

DH 算法的预备主密钥是客户端和服务器端共同计算出来的,因此是一致的。

  • 客户端向服务器端发起连接请求。
  • 服务器端生成一个RSA密钥对,并将公钥发送给客户端。
  • 服务器端生成DH参数和服务器DH密钥对,用RSA私钥签名DH参数和服务器 DH 公钥,将签名值、DH 参数、服务器 DH公钥发送给客户端。
  • 客户端通过服务器RSA的公钥验证签名,获取到PH参数和服务器DH公钥。客户端通过DH参数生成客户端的DH密钥对,并将客户端DH公钥发送给服务器端。
  • 客户端通过客户端 DH 私钥和服务器端 DH 公钥计算出预备主密钥。
  • 服务器端接收到客户端的DH公钥,结合服务器的DH私钥计算出预备主密钥。
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477