SSL/TLS 证书终极指南:X.509、PEM 与现代标准
当你看到浏览器地址栏中的小锁图标时,你就知道连接是安全的。但在那个小图标背后,隐藏着由数字证书、加密密钥和信任机构组成的复杂基础设施。
本指南将为你揭开 SSL/TLS 证书的神秘面纱,解释其格式、参与方以及保障网页安全的协议。
1. 什么是 X.509 证书?
X.509 是公共密钥证书格式的国际标准。当人们提到“SSL 证书”时,他们实际上指的就是 X.509 证书。
X.509 证书将一个公钥与一个身份(如域名或公司名)联系起来,并由证书颁发机构 (CA) 进行数字签名。
2. 常见的证书格式
证书有各种文件扩展名,这往往令人困惑。编码证书的两种主要方式是:
PEM (Privacy Enhanced Mail)
这是 Apache 和 Nginx 等 Web 服务器最常用的格式。
- 扩展名:
.pem,.crt,.cer,.key - 格式:Base64 编码的 ASCII 文本。开头通常是
-----BEGIN CERTIFICATE-----。
DER (Distinguished Encoding Rules)
证书的二进制版本。常用于 Java 环境或 Windows 系统。
- 扩展名:
.der,.cer - 格式:二进制数据。
PKCS#12 (PFX)
一种“打包”格式,可以在一个受密码保护的文件中存储证书、中间链和私钥。
- 扩展名:
.p12,.pfx - 用途:在服务器之间迁移证书,或在 Windows/IIS 上安装。
3. 生命周期:从 CSR 到 CA
如何获得证书?
- 生成私钥:创建一个保存在服务器上的秘密密钥。
- 创建 CSR (证书签名请求):这是一个包含你的公钥和身份信息的文件。
- 提交:将 CSR 发送给 CA (证书颁发机构),如 Let's Encrypt、DigiCert 或 Sectigo。
- 验证:CA 验证你确实拥有该域名。
- 颁发:CA 签名你的证书并将其发还给你。
4. 现代标准:TLS 1.3 及以后
虽然我们仍习惯称之为“SSL 证书”,但 SSL 协议本身已经过时且不安全。我们现在使用的是 TLS (传输层安全)。
TLS 1.3:当前标准
TLS 1.3 发布于 2018 年,比其前身更快、更安全。
- 速度:它减少了建立连接所需的“握手”次数,从而加快网页加载速度。
- 安全:它删除了过时的、不安全的加密算法(如 MD5 和 SHA-1)。
SNI (服务器名称指示)
SNI 是 TLS 的扩展,允许单个服务器(具有一个 IP 地址)为不同的域名托管多个 SSL 证书。这是现代共享主机和 CDN 成为可能的原因。
OCSP (在线证书状态协议)
OCSP 是一种让浏览器在证书到期前检查其是否已被吊销(例如私钥被盗)的方法。
5. 扩展名汇总表
| 扩展名 | 格式 | 包含内容 | 用途 |
|---|---|---|---|
| .pem / .crt | PEM (文本) | 仅证书 | Linux 服务器 (Nginx/Apache) |
| .key | PEM (文本) | 私钥 | Linux 服务器 (Nginx/Apache) |
| .p12 / .pfx | PKCS#12 (二进制) | 证书 + 密钥 + 链 | Windows (IIS), Java |
| .csr | PEM (文本) | 签名请求 | 申请证书 |
最佳实践
- 严格保护私钥:如果有人窃取了你的
.key文件,他们就可以冒充你的服务器。 - 使用 Let's Encrypt:对于大多数网站,Let's Encrypt 提供免费、自动化的证书,其安全性与付费证书完全相同。
- 监控过期时间:使用工具在证书过期前提醒你,避免出现“你的连接不是私密连接”的错误。
- 禁用旧协议:确保你的服务器配置为仅允许 TLS 1.2 和 TLS 1.3。
结论
SSL/TLS 证书是互联网信任的基石。虽然 X.509 和 PEM 等技术细节初看可能很复杂,但核心原理很简单:它们证明你是你所声称的那个人,并确保用户的数据保持私密。
需要转换证书格式或校验哈希值吗?虽然我们目前还没有专门的 SSL 工具,但你可以使用我们的 哈希生成器 来验证证书文件的完整性。