HTTPS(Hypertext Transfer Protocol Secure:安全超文本传输协议) 是 HTTP(Hypertext Transfer Protocol:超文本传输协议) 的扩展。
HTTPS 使用TLS (Transport Layer Security:传输层安全性) 传输加密数据。如果数据被在线劫持,劫持者得到的只是二进制代码。
数据如何加密和解密?
步骤1:客户端(浏览器)和服务器建立一个TCP链接。
步骤2:客户端向服务器发送“客户端问候”消息,该消息包含一组必要的加密算法和它可以支持的最新 TLS 版本。服务器以“服务器问候”作为响应,因此浏览器知道它是否可以支持算法和 TLS 版本。然后服务器将 SSL 证书发送给客户端。证书包含公钥、主机名、到期日期等。客户端验证证书。
步骤3:验证 SSL 证书后,客户端生成session key并使用“公钥”对其进行加密。服务器接收加密的session key并使用“私钥”对其进行解密。(公钥和私钥是非对象加密)
步骤4:现在客户端和服务端都有相同的session key(对称加密),加密数据在安全的双向通道中传输。
为什么HTTPS在数据传输过程中会切换到对称加密?主要原因有两个:
1. 安全性:非对称加密只能单向通讯。这意味着如果服务器试图将加密数据发送回客户端,任何人都可以使用公钥解密数据。
2. 服务器资源:非对称加密增加了相当多的数学开销。它不适合长时间会话中的数据传输。

