一文搞懂HTTP与HTTPS
发布时间:2025-12-10 11:42:51
浏览次数:2
HTTP与HTTPs
- 1. 基本概念
- 2. 非对称加密+对称加密方案
- 3. 基于SSL的实现
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私钥计算出预备主密钥。