SSL 协议与 TLS 协议

在软件发展过程中,有很多东西一开始都只是某个技术能力突出的公司研发出来的,在被大众认可取得一定市场后有可能被官方收编,成为行业内的一种标准。SSL 最早是 Netscape 公司研发的,后来被采纳成为标准后取名为 TLS。

1. 简介

SSL 是网景(Netscape)公司设计的主要用于 Web 的安全传输协议,后来致力于互联网标准开发与推动的组织(IETF)认为在 SSL3.0 的基础上将该协议进行升级并标准化(RFC 2246),并命名为 TLS(Transport Layer Security)。

1.1 SSL 协议提供的服务

  1. 认证用户和服务器,确保数据发送到正确的客户机和服务器;
  2. 加密数据以防止数据中途被窃取;
  3. 维护数据的完整性,确保数据在传输过程中不被改变。

1.2 SSL 协议结构

SSL

  1. 握手协议(SSL Handshake Protocol):它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。内部包括SSL握手协议(SSL HandShake Protocol)、SSL密码参数修改协议(SSL Change Cipher Spec Protocol)和SSL告警协议(SSL Alert Protocol)。

  2. 记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

2. 发展历史

协议 时间 状态
SSL 1.0 未公布 未公布
SSL 2.0 1995年 公开发布了第二版,于2011年弃用
SSL 3.0 1996年 第三版得到大规模应用,于2015年弃用
TLS 1.0 1999年 RFC2246 被IETF纳入标准,与 SSL 3.0 比变化不大,命名改为 TLS
TLS 1.1 2006年 RFC4346 修改bug,新增参数
TLS 1.2 2008年 RFC5246 功能扩展和算法改进
TLS 1.8 2018年 RFC8846 效率和安全均有较大提升

3. 现状

目前大家依然比较习惯用 SSL 称呼,但是 SSL 系列的所有版本都已经弃用了。TLS 可以认为是 SSL 的后续版本,低版本的 TLS 有存在较为明显的漏洞,所以并不是选择了 Https 就是决定安全的,建议至少选择 TLS 1.2 以上版本。

近年来各个大厂都不留余力的推动 Https ,腾讯小程序更是要求全站启用 Https 。在选择了 Https 的情况下我们要明白一点,Https 与 Http 相比,需要更多的 CPU 资源去计算加密算法的。我们的架构在设计的时候我是比较建议网关对外部分用 Https 算法,站点内部的服务间通信用 Http 或 Rpc 协议。

4. 小结

TLS 是传输层与应用层之间的加密协议,对于应用层来说他是透明的,也就是不用关心他的具体实现,不管有没有 TLS 对应用层的软件来说都是一样的。多了这一层的话可能在浏览器侧察觉不到,我们在浏览器 F12 查看的接口出入参都还是铭文的,其实底层传输的过层已经是加密处理了。