HTTPS通信过程分析
为什么需要HTTPS
HTTP缺点:
- 明文传输
- C/S两端不存在验证机制,无法确认对方身份,可能存在中间人攻击。
概念
- 对称加密:客户端和服务器持有同一个密钥对数据进行加密解密。
- 非对称加密:公钥加密私钥解密、私钥加密公钥解密
- CA:证书认证机构,签发数字证书,保证公钥的可信度。
- 数字证书:包含版本、序列号、有效期、颁发者、公钥等信息
数字证书是由CA颁发用于证明身份的证书,通过域名申请对应证书,域名的合法性由CA机构保证。
TLS有以下几个子协议:
- 记录协议(Record Protocol):规定TLS收发数据的基本单位为record,类似于TCP的segment,所有子协议都必须通过记录协议发出。
- 警报协议(Alert Protocol):向对方发出警报信息,比如:证书问题等
- 握手协议(Handshake Protocol):两端协商TLS版本号、随机数、密码套件等信息,然后客户端通过服务端的公钥和证书上的数字签名、两端协商得到会话密钥。
- 变更密码规范协议:通知对方后续数据使用密码加密保护
HTTPS通信过程
HTTPS通信可以划分为三个阶段:
TCP协议:通过三次握手建立TCP连接
TLS协议:四次握手建立TLS连接
HTTPS协议:客户端发送请求,服务端响应请求,通信报文使用密钥加密。
TLS 1.2 握手:使用非对称加密方式创建对称密钥,并使用对称加密完成HTTP通信。
详细过程:
- 客户端发送
Client Hello
消息到服务端,消息包含TLS版本、加密套件(Cipher Suite)、压缩算法、随机数,会话信息扩展信息等。 - 服务端发送
Server Hello
消息,消息包含服务端的TLS版本、加密套件(Cipher Suite)、会话信息 - 服务端发送
Certificate
消息,包括服务端的证书信息。 - 服务端发送
Server Key Exchange
消息,发送公钥与签名信息等。可能与Server Hello Done
消息一同发送。 - 客户端发送
Client Key Exchange
消息,根据自己信任的CA列表,验证服务端证书是否可行,可信则生成一串伪随机数,并使用公钥加密,这串随机数被用于生成新的对称密钥。 - 服务器端使用私钥解密随机数,并使用随机数生成自己的对称主密钥。
- 客户端发送
Finished
消息,使用对称密钥加密这次通信的hash值。 - 服务端生成自己的hash值,然后解密客户端发来的信息,检查这两个值是否对应,若对应则发送
Finished
消息。 - 接下来,整个HTTP会话都是用对称密钥进行加密并传输。
TLS握手的关键点:通过生成的随机数和服务端公钥,生成新的密钥,后续通信使用这个对称密钥加密,防止中间人攻击。
HTTPS通信过程分析
https://l1n.wang/2023/计算机基础/HTTPS通信过程分析/