HTTPS 是以安全为目标的 HTTP 通道,它在 HTTP 中加入 SSL 层以提高数据传输的安全性。
HTTP 以明文方式发送内容,不提供任何数据加密,因此 HTTP 不适合传输敏感信息。
SSL 依靠证书来验证服务器的身份,并对浏览器和服务器之间的通信进行数据加密,其端口一般是 443。

加密流程

  • 发起请求:客户端通过 TCP 和服务器建立连接之后(默认443端口),发出一个请求证书的消息给服务器,在该请求消息里包含自己可实现的算法列表和其他需要的信息。
  • 证书返回:服务器在收到消息后响应返回证书,在证书中包含服务器信息、域名、申请证书的公司、公钥、数据加密算法等。
  • 证书验证:客户端收到证书后,判断证书签发机构是否正确,并使用该签发机构的公钥确认签名是否有效,客户端还会确保在证书中列出的域名为正在连接的域名,如果客户端确认证书有效,则生成对称密钥,并使用公钥将对称密钥加密。
  • 密钥交换:客户端将加密后的对称密钥发送给服务器,服务器在接受到对称密钥后使用私钥解密。
  • 数据传输:经过上述步骤,客户端和服务器就完成了密钥对的交换,之后的数据传输过程中,客户端和服务端就可以基于对称加密,将数据加密后在网络上传输。