SSL/TLS 证书:保护您的网站连接
· 12分钟阅读
目录
什么是 SSL/TLS 证书?
SSL(安全套接字层)及其后继者 TLS(传输层安全)是在网络浏览器和服务器之间加密通信的加密协议。当您在浏览器地址栏中看到挂锁图标和 URL 中的"https://"时,SSL/TLS 证书正在工作,保护您与网站之间流动的数据。
SSL/TLS 证书是一种数字文档,具有三个关键功能:
- 加密 — 对数据进行加密,使只有预期的接收者才能读取,保护密码、信用卡号和个人数据等敏感信息免受窃听者的侵害
- 身份验证 — 证明服务器是其声称的身份,防止攻击者冒充合法网站的中间人攻击
- 完整性 — 确保数据在传输过程中未被篡改,保证服务器发送的内容与客户端接收的内容完全一致
虽然"SSL"在日常语言中仍然常用,但 SSL 协议本身由于在 SSL 2.0 和 SSL 3.0 中发现的安全漏洞已被弃用。现代网站使用 TLS 1.2 或 TLS 1.3,它们提供显著更强的加密和安全功能。然而,由于历史惯例,这些证书仍被广泛称为"SSL 证书"。
🛠️ 亲自尝试:使用我们的 SSL 检查工具立即验证任何网站的证书状态、到期日期和安全配置。
SSL/TLS 证书的重要性不仅仅在于安全性。像 Google 这样的搜索引擎使用 HTTPS 作为排名信号,这意味着没有 SSL 证书的网站在搜索结果中的排名可能较低。此外,现代浏览器会对非 HTTPS 网站显示明显的警告,这可能会显著影响用户信任和转化率。
TLS 握手如何工作
在交换任何加密数据之前,客户端(您的浏览器)和服务器执行 TLS 握手以建立安全连接。这个过程在毫秒内发生,但涉及几个复杂的步骤,以确保双方能够安全通信。
了解 TLS 握手有助于您排除连接问题,并理解那个简单的挂锁图标背后的复杂性。以下是典型 TLS 1.2 握手期间发生的情况:
- 客户端问候 — 您的浏览器向服务器发送一条消息,列出它支持的 TLS 版本和密码套件,以及一个随机数,该随机数将在稍后的密钥生成过程中使用
- 服务器问候 — 服务器从客户端的列表中选择 TLS 版本和密码套件进行响应,发送自己的随机数,以及包含公钥的 SSL/TLS 证书
- 证书验证 — 您的浏览器根据其受信任的证书颁发机构(CA)列表验证服务器的证书。它检查证书的有效期、域名匹配和吊销状态
- 密钥交换 — 客户端生成一个预主密钥,使用证书中的服务器公钥对其进行加密,并将其发送到服务器。只有服务器可以使用其私钥解密
- 生成会话密钥 — 客户端和服务器都使用两个随机数和预主密钥独立生成相同的会话密钥用于对称加密
- 完成消息 — 双方发送加密的"完成"消息,以验证握手成功,并且现在可以安全通信
TLS 1.3 是最新版本,显著简化了这一过程。它将握手减少到只需一次往返而不是两次,将连接速度提高了多达 40%。它还删除了对旧的、易受攻击的密码套件的支持,并默认实现前向保密。
专业提示:您可以在浏览器的开发者工具中查看 TLS 握手详细信息。在 Chrome 中,打开 DevTools,转到"安全"选项卡,然后点击"查看证书"以查看完整的证书链和协议详细信息。
握手还确定将用于会话的密码套件。密码套件是定义如何处理加密、身份验证和消息完整性的算法组合。现代密码套件使用 AES-256 等算法进行加密,ECDHE 进行密钥交换,SHA-256 进行哈希。
证书类型和验证级别
并非所有 SSL/TLS 证书都是相同的。它们在验证级别、覆盖范围和预期用例方面有所不同。选择正确的类型取决于您网站的需求、预算以及您希望与访问者建立的信任级别。
验证级别
证书颁发机构(CA)提供三个主要验证级别,每个级别在颁发前需要不同程度的验证:
| 验证类型 | 验证过程 | 颁发时间 | 最适合 |
|---|---|---|---|
| 域名验证(DV) | 仅通过电子邮件、DNS 或 HTTP 验证域名所有权 | 几分钟到几小时 | 博客、个人网站、开发环境 |
| 组织验证(OV) | 验证域名所有权以及通过企业注册检查验证组织身份 | 1-3天 | 商业网站、企业网站、内网 |
| 扩展验证(EV) | 严格验证,包括组织的法律、物理和运营存在 | 1-2周 | 电子商务、银行、高安全性应用 |
域名验证证书是最常见和最实惠的选择。它们非常适合大多数网站,可以通过 Let's Encrypt 等服务免费获得。CA 只需验证您控制该域名,通常是让您添加 DNS 记录或回复发送到管理员地址的电子邮件。
组织验证证书通过验证您的企业是合法且依法注册的,提供额外的信任层。组织名称显示在证书详细信息中,用户可以通过点击挂锁图标查看。
扩展验证证书曾经通过在浏览器地址栏中直接显示带有绿色高亮的组织名称而与众不同。然而,主要浏览器已经删除了这一视觉指示器,使 EV 证书不再像以前那样在视觉上与众不同。它们仍然提供最高级别的验证,但对许多组织来说,投资回报率已经下降。
覆盖范围
证书在可以保护多少域名和子域名方面也有所不同:
- 单域名 — 保护一个特定域名(例如 example.com)。除非明确包含,否则不覆盖 www.example.com
- 通配符 — 保护一个域名及其所有一级子域名(例如 *.example.com 覆盖 blog.example.com、shop.example.com、api.example.com)
- 多域名(SAN) — 使用主题备用名称(Subject Alternative Names)用单个证书保护多个不同的域名(例如 example.com、example.org、example.net)
- 多域名通配符 — 结合通配符和多域名功能,保护多个域名及其子域名
快速提示:通配符证书不覆盖多个子域名级别。*.example.com 的证书将保护 blog.example.com,但不保护 api.blog.example.com。为此,您还需要 *.blog.example.com。
SSL/TLS 证书的结构
SSL/TLS 证书包含几个重要字段,浏览器和服务器使用这些字段来建立信任和安全连接。了解这些组件有助于您排除问题并在获取证书时做出明智的决定。
每个证书都包含以下关键信息:
- 主题 — 证书颁发给的实体,包括通用名称(CN),通常是域名
- 颁发者 — 颁发并签署证书的证书颁发机构
- 有效期 — 证书有效的开始和结束日期。现代证书的最长有效期为 398 天(约 13 个月)
- 公钥 — 在 TLS 握手期间用于加密和密钥交换的加密公钥
- 签名算法 — CA 用于签署证书的算法(例如 SHA-256 with RSA)
- 主题备用名称(SAN) — 证书覆盖的其他域名和子域名
- 密钥用途 — 指定证书可用于什么(例如数字签名、密钥加密)
- 证书策略 — 对 CA 的策略和验证程序的引用
您可以在任何浏览器中通过点击挂锁图标并选择"证书"或"查看证书"来查看证书的详细信息。这将显示完整的证书链,通常包括三个级别:
- 终端实体证书 — 您网站的证书
- 中间证书 — 一个或多个将您的证书链接到根证书的证书
- 根证书 — CA 的受信任根证书,预装在浏览器和操作系统中
证书链对于建立信任至关重要。浏览器不直接信任您的证书;它们信任根 CA,而您的证书通过中间证书证明它是由该受信任机构签署的。
专业提示:始终配置您的 Web 服务器发送完整的证书链,包括中间证书。缺少中间证书是 SSL 错误的常见原因,尤其是在可能没有缓存所有中间证书的移动设备上。
获取 SSL 证书
近年来,由于 Let's Encrypt 等举措和改进的自动化工具,获取 SSL/TLS 证书变得更加容易和实惠。以下是保护您网站安全的综合指南。
免费证书选项
Let's Encrypt 通过提供免费的自动化域名验证证书,彻底改变了 SSL/TLS。它现在是世界上最大的证书颁发机构,保护着数亿个网站。证书有效期为 90 天,可以使用 Certbot 等工具自动续期。
获取 Let's Encrypt 证书:
- 在您的服务器上安装 Certbot 或其他 ACME 客户端
- 为您的 Web 服务器(Apache、Nginx 等)运行证书请求命令
- Certbot 自动验证域名所有权并安装证书
- 设置自动续期每 60 天运行一次
大多数主要托管提供商现在通过其控制面板提供一键 SSL 安装,通常在后台使用 Let's Encrypt。这包括 cPanel、Plesk 等平台,以及 AWS、DigitalOcean 和 Cloudflare 等云提供商。
商业证书颁发机构
虽然免费证书对大多数用例都非常有效,但您可能会