传输层安全协议 SSL/TLS 详细介绍
传输层安全协议 SSL/TLS 详细介绍
传输层安全性协议TLS及其前身安全套接层SSL是一种安全传输协议,目前TLS协议已成为互联网上保密通信的工业标准,在浏览器、邮箱、即时通信、VoIP等应用程序中得到广泛的应用。本文对SSL和TLS协议进行一个详细的介绍,以便于大家更直观的理解和认识SSL和TLS协议。
1、引言
在SSL/TLS协议出现之前,很多应用层协议都存在着网络安全问题,例如大家所熟知的HTTP协议,它在传输过程中使用的是明文信息,传输报文一旦被截获便会泄露传输内容,另外传输过程中报文如果被篡改,无法轻易发现,也无法保证消息交换的对端身份的可靠性。为了解决此类问题,人们在应用层和传输层之间加入了SSL/TLS协议。
2、SSL/TLS概述
传输层安全性协议(Transport Layer Security,缩写作TLS),及其前身安全套接层(Secure Sockets Layer,缩写作SSL)是一种安全协议。最初SSL协议是由网景公司(Netscape)开发,并集成到浏览器中,用于保护HTTP传输的安全性。IETF以SSL协议为基础,提出了一种新的协议:TLS协议,建立在SSL V3.0的基础上,已经开始在实际应用中使用。TLS协议可以说是更为安全的升级版SSL,因为历史上习惯了SSL这个称呼,所以还是会称其为SSL协议。
不使用SSL/TLS的HTTP通信,就是不加密的通信,即明文通信,信息明文传播带来了三大风险:
- 窃听风险(eavesdropping):第三方可以获知通信内容。
- 篡改风险(tampering):第三方可以修改通信内容。
- 冒充风险(pretending):第三方可以冒充他人身份参与通信。
而SSL/TLS协议是为了解决这三大风险而设计的,希望达到:
- 所有信息都是加密传播,第三方无法窃听。
- 具有校验机制,一旦被篡改,通信双方会立刻发现。
- 配备身份证书,防止身份被冒。
SSL/TLS位于传输层和应用层之间:
应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密并增加自己的SSL头,再交由传输层进行传输。SSL/TLS协议的作用主要有以下三点:
- 保密(Message Privacy):通过加密实现,所有信息都加密传输,第三方无法嗅探;
- 完整性(Message Integrity):通过MAC校验机制实现,一旦被篡改,通信双方会立刻发现;
- 认证(Mutual Authentication):双方认证,双方都可以配备证书,防止身份被冒充。
互联网是开放环境,通信双方都是未知身份,这为协议的设计带来了很大的难度。而且,协议还必须能够经受所有匪夷所思的攻击,这使得SSL/TLS协议变得异常复杂。SSL/TLS协议采用数字证书进行双端实体认证,用非对称加密算法进行密钥协商,用对称加密算法将数据加密后进行传输以保证数据的保密性,并且通过计算数字摘要来验证数据在传输过程中是否被篡改和伪造,从而为敏感数据在Internet上的传输提供了一种安全保障手段。、
大家日常使用的https就是使用SSL/TLS加密的。
3、SSL/TLS发展历史
1994年,NetScape网景公司设计了SSL协议(Secure Sockets Layer)的1.0版,用于HTTPS的加密,这是SSL的起源。这种协议开始在Web上获得了广泛的应用。
1995年,NetScape网景公司发布SSL 2.0版,但很快发现有严重漏洞。
1996年,NetScape网景公司重新设计SSL,推出SSL3.0版,得到大规模应用。
1999年,互联网标准化组织ISOC接替NetScape网景公司,发布了SSL的升级版TLS 1.0版。
2006年和2008年,TLS(Transport Layer Security)进行了两次升级,分别为TLS 1.1版和TLS 1.2版。最新的变动是2011年TLS 1.2的修订版。目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。但是,主流浏览器都已经实现了对TLS 1.2的支持。
TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。
4、SSL详细介绍
SSL(Secure Sockets Layer,安全套接层)认证是保护网站数据安全的关键技术,网站通过部署SSL证书实现加密通信、身份验证和数据完整性。现代互联网基本都采用TLS协议,但仍常称为SSL证书。
4.1、SSL 认证
SSL认证的核心作用:
- 数据加密:防止数据在传输过程中被窃取或篡改,保证机密性。
- 身份验证:验证服务器身份,防止用户连接到伪造的服务器(如中间人攻击)。
- 数据完整性:确保传输的数据未被篡改,提高数据的可信度。
4.2、SSL证书的工作原理
服务器部署SSL证书:
- 服务器向CA(Certificate Authority,证书颁发机构)申请SSL证书。
- CA验证服务器身份后颁发证书,包含公钥、服务器信息等。
客户端(浏览器)与服务器建立SSL/TLS连接:
- 客户端向服务器请求安全连接(HTTPS)。
- 服务器发送SSL证书,客户端验证证书的有效性(是否由可信CA签发、是否过期等)。
- 若验证通过,客户端和服务器进行密钥交换,协商使用对称加密算法。
- 之后,所有通信数据均被加密,确保安全。
4.3、SSL证书的类型
- 域名验证(DV)证书:仅验证域名所有权,成本低,适合个人网站。
- 企业验证(OV)证书:验证企业身份,适用于公司官网、B2B平台。
- 扩展验证(EV)证书:最高级别的身份认证,适用于金融、电商等对安全要求高的网站。
- 通配符(Wildcard)证书:可用于多个子域名(如*.example.com)。
- 多域名(SAN)证书:支持多个不同的域名绑定在同一证书上。
4.4、常见的SSL证书提供商
- DigiCert
- GlobalSign
- Sectigo(原Comodo)
- Let’s Encrypt(免费证书)
- GeoTrust
4.5、如何检查网站是否使用SSL认证?
- 看浏览器地址栏是否以https://开头。
- 查看浏览器的🔒锁🔒图标,点击可查看证书详情。
- 使用 openssl 命令检查:openssl s_client -connect example.com:443
5、TLS详细介绍
TLS(Transport Layer Security,传输层安全协议)是 SSL(Secure Sockets Layer,安全套接层)的升级版本,用于在网络通信中提供加密、数据完整性和身份验证。TLS 目前是互联网安全通信的主流标准,广泛应用于 HTTPS、邮件传输、VPN、VoIP 等场景。
5.1、TLS的主要作用
- 加密数据:防止数据在传输过程中被窃取或篡改,保障通信的机密性。
- 身份认证:使用 数字证书(如 SSL 证书)验证服务器(或客户端)的真实性,防止中间人攻击。
- 数据完整性:使用消息认证码(MAC)确保数据在传输过程中没有被篡改。
5.2、TLS的工作流程
TLS 建立安全连接的过程称为 TLS握手(TLS Handshake),通常包括以下步骤:
1)客户端向服务器发送“Hello”
客户端(如浏览器)发送 ClientHello,包含支持的 TLS 版本、加密算法(Cipher Suites) 和 随机数(Client Random)。
2)服务器回应“Hello”
服务器返回 ServerHello,选择加密算法,并发送数字证书(SSL 证书),其中包含服务器的公钥和身份信息。
3)证书验证
客户端验证证书是否由受信任的CA(证书颁发机构)签发,是否过期,是否匹配访问的域名。
如果证书无效,连接可能会被阻止(浏览器会显示“不安全”警告)。
4)密钥交换
客户端生成会话密钥(Session Key),并使用服务器的公钥加密发送给服务器(或使用 DH/ECDH 进行密钥协商)。
服务器使用私钥解密,获得相同的会话密钥。
5)生成会话密钥,开始安全通信
客户端和服务器使用商定的对称加密算法(如 AES)进行数据加密,后续通信使用该会话密钥加密数据。
5.3、TLS版本
版本 | 发布时间 | 主要特点 |
---|---|---|
TLS 1.0 | 1999 | 最早的 TLS 版本,已被弃用。 |
TLS 1.1 | 2006 | 增加对 CBC(Cipher Block Chaining)模式的安全改进,已弃用。 |
TLS 1.2 | 2008 | 目前广泛使用的版本,支持更强的加密算法(AES-GCM),引入 HMAC 进行消息认证。 |
TLS 1.3 | 2018 | 最新版本,优化握手流程(减少 1 个 RTT),去除了不安全的算法(如 RSA 密钥交换)。 |
TLS 1.3 是当前最安全、性能最优的版本,推荐使用!
5.4、TLS和SSL的比较
对比 | SSL | TLS |
---|---|---|
安全性 | 存在较多漏洞(如 POODLE) | 更安全,移除不安全算法 |
速度 | 握手过程较慢 | TLS 1.3 速度更快(减少 RTT) |
版本 | 最高为 SSL 3.0(已弃用) | 最新版为 TLS 1.3 |
加密算法 | 支持较旧的加密算法 | 仅支持强加密(如 AES-GCM、ChaCha20) |
TLS 1.0 和 1.1 已被废弃,TLS 1.2 和 TLS 1.3 是当前主流标准!
5.5、TLS应用场景
- HTTPS(安全网页通信):如 https://example.com
- VPN(虚拟专用网络):如 OpenVPN
- 电子邮件:如 SMTPS、IMAPS、POP3S
- VoIP(网络电话):如 SIP over TLS
- 消息传输:如 MQTT over TLS
5.6、如何检查TLS版本?
1)使用 OpenSSL
openssl s_client -connect example.com:443 -tls1_3
如果服务器支持 TLS 1.3,会成功建立连接,否则会失败。
2)使用浏览器
在 Chrome/Firefox 中,访问 https://example.com
点击🔒锁图标 > 查看证书 > 检查TLS 版本
6、最后
TLS 是 SSL 的升级版,比 SSL 更安全、更高效,目前广泛用于 HTTPS 和其他加密通信。TLS 1.2 和 TLS 1.3 是当前主流标准,TLS 1.3 具有更快的握手速度和更强的安全性。检查网站是否支持 TLS,可以使用 openssl 或浏览器查看证书。