如今 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 站点流程吧
- 用户在浏览器地址栏中输入 HTTPS 站点的 URL
- 服务器第一次并没有返回该 URL 的资源,而是返回了证书
- 浏览器检查证书的合法性
- 浏览器使用证书中的公钥加密一个随机对称密钥,并将加密后的密钥以及使用密钥加密后的请求 URL 一起发送到服务器
- 服务器用私钥解密出随机对称密钥,并使用随机对称密钥解密出请求 URL
- 服务器把浏览器请求的资源使用随机对称密钥加密后返回给浏览器
- 浏览器使用随机对称密钥解密资源并显示出来
具体一点的 SSL
SSL 协议由两层组成:
- 上层包括:SSL 握手协议、更改密码规格协议、警报协议
- 下层包括:SSL 记录协议
SSL 握手协议建立在 SSL 记录协议之上,在实际的数据传输开始前,用于在客户和服务器之间进行“握手”。“握手”是一个协商过程:客户和服务器能够互相鉴别身份,协商加密算法。
“握手”完成后,就能进行 SSL 记录协议了。它的主要功能是为高层协议提供数据封装、压缩、添加 MAC、加密等支持。