HTTPS 是一种安全的HTTP协议,通过 TLS/SSL 加密协议保护数据传输,防止数据被篡改
和 HTTP 的区别
- 加密方式,HTTP 明文,HTTPS 加密
- 端口号不同:HTTP 默认使用80端口,而 HTTPS 默认使用 443 端口。
- 证书验证:HTTPS 需要通过数字证书来验证服务器身份,防止中间人攻击。
- 速度:HTTPS 因为要进行加密处理,所以比 HTTP 稍微慢一些。
HTTPS 握手过程
- 客户端问候(client hello)消息: 客户端通过向服务器发送 问候 消息来开始握手。该消息将包含客户端支持的 TLS 版本,支持的密码套件,以及称为一串称为 客户端随机数(client random)的随机字节。
- 服务器问候(server hello)消息: 作为对 client hello 消息的回复,服务器发送一条消息,内含服务器的 SSL 证书、服务器选择的密码套件,以及 服务器随机数(server random),即由服务器生成的另一串随机字节。
- 身份验证: 客户端使用颁发该证书的证书颁发机构验证服务器的 SSL 证书。此举确认服务器是其声称的身份,且客户端正在与该域的实际所有者进行交互。
- 预主密钥: 客户端再发送一串随机字节,即 预主密钥(premaster secret)。预主密钥是使用公钥加密的,只能使用服务器的私钥解密。(客户端从服务器的 SSL 证书中获得公钥。)
- 私钥被使用:服务器对预主密钥进行解密。
- 生成会话密钥:客户端和服务器均使用客户端随机数、服务器随机数和预主密钥生成会话密钥。双方应得到相同的结果。
- 客户端就绪:客户端发送一条 已完成 消息,该消息用会话密钥加密。
- 服务器就绪:服务器发送一条 已完成 消息,该消息用会话密钥加密。