SSL 协议与 TLS 协议
在软件发展过程中,有很多东西一开始都只是某个技术能力突出的公司研发出来的,在被大众认可取得一定市场后有可能被官方收编,成为行业内的一种标准。SSL 最早是 Netscape 公司研发的,后来被采纳成为标准后取名为 TLS。
1. 简介
SSL 是网景(Netscape)公司设计的主要用于 Web 的安全传输协议,后来致力于互联网标准开发与推动的组织(IETF)认为在 SSL3.0 的基础上将该协议进行升级并标准化(RFC 2246),并命名为 TLS(Transport Layer Security)。
1.1 SSL 协议提供的服务
- 认证用户和服务器,确保数据发送到正确的客户机和服务器;
- 加密数据以防止数据中途被窃取;
- 维护数据的完整性,确保数据在传输过程中不被改变。
1.2 SSL 协议结构
- 握手协议(SSL Handshake Protocol):它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。内部包括SSL握手协议(SSL HandShake Protocol)、SSL密码参数修改协议(SSL Change Cipher Spec Protocol)和SSL告警协议(SSL Alert Protocol)。
- 记录协议(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 查看的接口出入参都还是铭文的,其实底层传输的过层已经是加密处理了。