一、SSL 是什么
SSL(Secure Sockets Layer,安全套接层),位于应用层与传输层之间的安全协议,由网景公司最早开发。
作用:为TCP之上的应用层协议(HTTP、FTP、SMTP等)提供加密、数据完整性校验、身份认证。
重要历史:SSL 1.0从未发布;SSL2.0、SSL3.0都发现严重安全漏洞,现已全部废弃;SSL3.0之后演进为TLS(Transport Layer Security,传输层安全协议)。
日常口语里大家常说的“SSL证书”,本质现在用的都是TLS证书。
二、SSL 所在层级
TCP ↔ SSL/TLS ↔ 应用层(HTTP/SMTP等)
SSL并不是应用层协议,是介于TCP和应用层之间的安全层。应用层数据交给SSL层加密,再交给TCP传输。
三、SSL 提供三大安全能力
- 数据加密:传输内容被加密,中间人无法读取明文;
- 消息完整性:通过MAC消息认证码校验,一旦报文被篡改,接收方可以识别并丢弃;
- 身份认证:依靠数字证书,主要校验服务器身份;也可选客户端证书双向认证。
四、SSL 握手流程(SSL3.0)
- 客户端Hello
客户端发送:支持的SSL版本、加密套件列表、客户端随机数。 - 服务端Hello
服务器选定双方共同支持的加密套件、SSL版本,返回服务器随机数,下发服务器数字证书。 - 证书校验
客户端验证服务器证书合法性(CA签名、有效期、域名匹配)。 - 预主密钥交换
客户端生成预主密钥(Pre-Master Secret),使用服务器证书中的公钥加密发送给服务端。 - 会话密钥生成
客户端和服务器,使用客户端随机数、服务端随机数、预主密钥,各自独立计算出相同的会话对称密钥。 - 握手完成
双方使用新生成的会话密钥,互相发送Finished消息,校验握手结果。握手成功后,后续业务流量全部用对称密钥加密传输。
握手阶段使用非对称加密协商密钥;业务传输阶段使用对称加密传输数据。
五、SSL 报文结构
SSL报文由:记录层、握手层、告警层、应用数据层组成。
- 记录协议:把上层数据分片、压缩、加MAC、加密,封装成SSL记录;
- 握手协议:负责版本协商、加密套件协商、证书交换、密钥协商;
- 告警协议:传递错误、警告信息(证书无效、解密失败等);
- 应用数据协议:承载加密后的应用层数据(如HTTP报文)。
六、SSL 与 TLS 的关系(重点考点)
- SSL:网景公司原始协议,SSL 2.0/3.0存在严重安全缺陷,已被淘汰(POODLE漏洞等)
- TLS:IETF基于SSL3.0改进推出,TLS1.0、TLS1.1、TLS1.2、TLS1.3
简单一句话:TLS是SSL的继任者,SSL是旧版本,现在工程上全部使用TLS,不再使用SSL。
| 版本 | 状态 | 备注 |
|---|---|---|
| SSLv2 | 废弃 | 高危漏洞,禁用 |
| SSLv3 | 废弃 | POODLE漏洞,禁用 |
| TLS1.0 | 淘汰 | 不再推荐 |
| TLS1.1 | 淘汰 | 不再推荐 |
| TLS1.2 | 广泛使用 | 目前主流稳定版本 |
| TLS1.3 | 新一代 | 握手更快,安全性更高 |
七、SSL 的优缺点
✅ 优点
- 在TCP之上提供安全层,可给多种应用协议加密(HTTP、FTP、SMTP等),不改动上层应用协议;
- 证书机制完成服务器身份认证;
- 混合使用非对称+对称加密,兼顾安全与性能。
❌ 缺点
- SSL2/SSL3存在大量安全漏洞,不能使用;
- 握手会增加网络RTT,带来一定性能开销;
- 只能保证传输过程安全,不保证服务器本身数据安全。
八、SSL 和 HTTPS 的关系
HTTPS = HTTP over SSL/TLS。
HTTPS并不是独立协议,HTTP报文被SSL/TLS封装加密,跑在TCP上,端口443。
误区纠正:HTTPS不是HTTP+SSL,现代HTTPS使用的是TLS,不是SSL。
九、小结
- SSL是位于TCP和应用层之间的安全套接层协议,由网景开发;
- SSL2.0、SSL3.0存在高危漏洞,全部废弃,后继协议是TLS;
- SSL提供加密、完整性校验、服务器身份认证;
- 握手阶段协商加密套件,交换随机数,生成会话密钥;握手完成后业务数据对称加密传输;
- 行业习惯称呼“SSL证书”,实际部署使用的是TLS证书。
思考题:既然SSL已经废弃,为什么证书还叫SSL证书?
0 条笔记