自学教程 从零学编程

SSL 协议

一、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 提供三大安全能力

  1. 数据加密:传输内容被加密,中间人无法读取明文;
  2. 消息完整性:通过MAC消息认证码校验,一旦报文被篡改,接收方可以识别并丢弃;
  3. 身份认证:依靠数字证书,主要校验服务器身份;也可选客户端证书双向认证。

四、SSL 握手流程(SSL3.0)

  1. 客户端Hello
    客户端发送:支持的SSL版本、加密套件列表、客户端随机数。
  2. 服务端Hello
    服务器选定双方共同支持的加密套件、SSL版本,返回服务器随机数,下发服务器数字证书。
  3. 证书校验
    客户端验证服务器证书合法性(CA签名、有效期、域名匹配)。
  4. 预主密钥交换
    客户端生成预主密钥(Pre-Master Secret),使用服务器证书中的公钥加密发送给服务端。
  5. 会话密钥生成
    客户端和服务器,使用客户端随机数、服务端随机数、预主密钥,各自独立计算出相同的会话对称密钥。
  6. 握手完成
    双方使用新生成的会话密钥,互相发送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 的优缺点

✅ 优点

  1. 在TCP之上提供安全层,可给多种应用协议加密(HTTP、FTP、SMTP等),不改动上层应用协议;
  2. 证书机制完成服务器身份认证;
  3. 混合使用非对称+对称加密,兼顾安全与性能。

❌ 缺点

  1. SSL2/SSL3存在大量安全漏洞,不能使用;
  2. 握手会增加网络RTT,带来一定性能开销;
  3. 只能保证传输过程安全,不保证服务器本身数据安全。

八、SSL 和 HTTPS 的关系

HTTPS = HTTP over SSL/TLS。
HTTPS并不是独立协议,HTTP报文被SSL/TLS封装加密,跑在TCP上,端口443。

误区纠正:HTTPS不是HTTP+SSL,现代HTTPS使用的是TLS,不是SSL。

九、小结

  1. SSL是位于TCP和应用层之间的安全套接层协议,由网景开发;
  2. SSL2.0、SSL3.0存在高危漏洞,全部废弃,后继协议是TLS;
  3. SSL提供加密、完整性校验、服务器身份认证;
  4. 握手阶段协商加密套件,交换随机数,生成会话密钥;握手完成后业务数据对称加密传输;
  5. 行业习惯称呼“SSL证书”,实际部署使用的是TLS证书。

思考题:既然SSL已经废弃,为什么证书还叫SSL证书?

标签:

0 条笔记