· 12 min read
Every time you see that little padlock icon in your browser's address bar, you'
每次当你在浏览器地址栏看到那个小锁图标时,你正在见证 SSL/TLS 加密的工作。但幕后究竟发生了什么?HTTPS 如何将你的敏感数据转换为不可读的格式,从而抵御黑客攻击?
在这份综合指南中,我们将揭开 SSL/TLS 协议的神秘面纱,探索它们如何保护你的在线通信,并向你展示实施和排查这些关键安全技术的实用方法。
SSL(安全套接字层)和TLS(传输层安全)是旨在通过计算机网络提供安全通信的加密协议。虽然 SSL 是 Netscape 在 1990 年代开发的原始协议,但 TLS 是其继任者,也是我们今天使用的现代标准。
当你使用 HTTPS(HTTP 安全)访问网站时,你正在使用 TLS 加密。HTTPS 中的"S"代表"安全",而这种安全性来自 TLS 将你的 HTTP 流量包装在加密隧道中。
以下是 SSL/TLS 实现的功能:
快速提示:虽然我们经常说"SSL 证书"或"SSL 加密",但在现代环境中我们几乎总是指 TLS。由于安全漏洞,SSL 3.0 已于 2015 年弃用。
SSL/TLS 使用非对称和对称加密的组合来保护你的数据。理解这种混合方法是掌握协议如何同时实现安全性和性能的关键。
非对称加密使用两个数学相关的密钥:公钥和私钥。使用公钥加密的数据只能用相应的私钥解密,反之亦然。
可以把它想象成一个邮箱:任何人都可以投递信件(使用公钥加密),但只有拥有钥匙的人才能打开并阅读内容(使用私钥解密)。
挑战在哪里?非对称加密计算成本高,对于大量数据来说速度慢。
对称加密使用单个共享密钥进行加密和解密。它比非对称加密快得多,非常适合加密正在传输的实际数据。
问题是什么?双方都需要拥有相同的密钥,而安全地共享该密钥是一个挑战。
SSL/TLS 巧妙地结合了两种方法:
| 加密类型 | 使用的密钥 | 速度 | 在 TLS 中的用例 |
|---|---|---|---|
| 非对称 | 公钥 + 私钥 | 慢 | 初始握手,密钥交换 |
| 对称 | 单个共享密钥 | 快 | 批量数据加密 |
TLS 握手是魔法发生的地方。这是协商阶段,你的浏览器和服务器就如何加密连接达成一致。让我们分解一下在这些关键的毫秒内发生了什么。
1. 客户端问候
你的浏览器发送一条"客户端问候"消息,包含:
2. 服务器问候
服务器响应:
3. 证书验证
你的浏览器通过以下方式验证服务器的证书:
4. 密钥交换
客户端生成一个"预主密钥",使用服务器的公钥(来自证书)对其进行加密,并将其发送到服务器。只有服务器可以使用其私钥解密。
5. 会话密钥创建
客户端和服务器都使用预主密钥和之前交换的随机数独立生成相同的对称会话密钥。
6. 完成消息
双方都发送加密的"完成"消息,以验证握手成功,并且它们现在可以安全通信。
专业提示:现代 TLS 1.3 已将此过程简化为仅一次往返,显著减少了延迟。如果你正在配置服务器,请始终启用 TLS 1.3 以获得更好的性能。
你可以使用我们的SSL 检查工具观察此握手的实际操作,以分析任何网站的证书和连接详细信息。
SSL/TLS 证书是一个数字文档,将加密密钥对绑定到组织的详细信息。它就像一个数字护照,证明网站的身份。
每个 SSL/TLS 证书都包含:
| 证书类型 | 验证级别 | 最适合 | 典型成本 |
|---|---|---|---|
| 域名验证(DV) | 基本 - 证明域名所有权 | 博客、个人网站、小型企业 | 免费 - $50/年 |
| 组织验证(OV) | 中等 - 验证组织身份 | 商业网站、电子商务 | $50 - $200/年 |
| 扩展验证(EV) | 最高 - 彻底的组织审查 | 银行、大型企业、高安全性网站 | $200 - $1000/年 |
| 通配符 | 覆盖所有子域 | 具有多个子域的网站 | $100 - $500/年 |
| 多域(SAN) | 覆盖多个不同域 | 拥有多个域的组织 | $100 - $400/年 |
证书颁发机构(CA)是受信任颁发 SSL/TLS 证书的组织。你的浏览器和操作系统预装了受信任根 CA 的列表。
流行的 CA 包括:
当 CA 颁发证书时,他们为证书持有者的身份担保。如果证书由受信任的 CA 签名,你的浏览器将自动信任它。
了解这些协议的演变有助于你做出明智的安全决策。以下是完整的时间线:
安全警告:现代服务器上应仅启用 TLS 1.2 和 TLS 1.3。所有版本的 SSL 和较旧的 TLS 版本都有已知漏洞,应该禁用。
TLS 1.3 带来了重大改进:
密码套件是一组协同工作以保护网络连接的算法。在 TLS 握手期间,客户端和服务器协商使用哪个密码套件。
典型的密码套件名称如下所示:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
让我们分解一下:
对于 TLS 1.2,优先使用这些密码套件:
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
对于 TLS 1.3,密码套件被简化:
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_GCM_SHA256
专业提示:始终优先选择名称中带有"ECDHE"或"DHE"的密码套件 - 这些提供前向保密,意味着即使服务器的私钥被泄露,过去的通信仍然安全。
正确设置 SSL/TLS 对于网站的安全至关重要。以下是最常见场景的实用指南。
Online Network Tools