初识 HTTPS

如今 HTTPS 已经全球化普及了,而我 HTTP 还没有完全学懂。。。

到底是 SSL 还是 TLS ?

一般的 HTTPS 是基于 SSL(Secure Sockets Layer)协议的。
SSL 是网景公司开发的位于 TCP 与 HTTP 之间的透明安全协议,通过 SSL,可以把 HTTP 包数据以非对称加密的形式往返于浏览器和站点之间,从而避免被第三方非法获取。
伴随着电子商务的兴起,HTTPS 逐渐普及。然后,业界大佬,制定了经典的七层网络协议的 IETF(Internet Engineering Task Force)看不下去了,又插了一脚指定了标准的 TLS(Transport Layer Security)。TLS 建立于 SSL v3.0 之上并且兼容 SSL v3.0,它们之间的主要区别在于所支持的加密算法。

简要说明访问 HTTPS 站点流程吧

  1. 用户在浏览器地址栏中输入 HTTPS 站点的 URL
  2. 服务器第一次并没有返回该 URL 的资源,而是返回了证书
  3. 浏览器检查证书的合法性
  4. 浏览器使用证书中的公钥加密一个随机对称密钥,并将加密后的密钥以及使用密钥加密后的请求 URL 一起发送到服务器
  5. 服务器用私钥解密出随机对称密钥,并使用随机对称密钥解密出请求 URL
  6. 服务器把浏览器请求的资源使用随机对称密钥加密后返回给浏览器
  7. 浏览器使用随机对称密钥解密资源并显示出来

具体一点的 SSL

SSL 协议由两层组成:

  • 上层包括:SSL 握手协议、更改密码规格协议、警报协议
  • 下层包括:SSL 记录协议

SSL 握手协议建立在 SSL 记录协议之上,在实际的数据传输开始前,用于在客户和服务器之间进行“握手”。“握手”是一个协商过程:客户和服务器能够互相鉴别身份,协商加密算法。
“握手”完成后,就能进行 SSL 记录协议了。它的主要功能是为高层协议提供数据封装、压缩、添加 MAC、加密等支持。