ECC(椭圆曲线密码学)和 RSA 是两种用于生成 SSL 证书密钥对的算法。两者都是安全的,但 ECC 能生成安全性等同但更小的密钥和更快的 TLS 握手。大多数现代部署应使用 ECC。
快速对比
| ECC (P-256) | RSA 2048 | RSA 4096 | |
|---|---|---|---|
| 密钥大小 | 256 位 | 2048 位 | 4096 位 |
| 等效安全性 | ~128 位 | ~112 位 | ~128 位 |
| TLS 握手速度 | 最快 | 中等 | 最慢 |
| 证书大小 | ~500 字节 | ~1,200 字节 | ~2,400 字节 |
| 密钥生成 | 快 | 中等 | 慢 |
| 浏览器支持 | 所有现代浏览器 | 通用 | 通用 |
| Let’s Encrypt 默认 | ✅ 推荐 | 支持 | 支持 |
| GetHTTPS 默认 | ✅ P-256 | 可选 | 不提供 |
为什么 ECC 对大多数场景更好
更小的密钥,相同的安全性
256 位的 ECC 密钥提供等同于 3072 位 RSA 密钥的安全性。更小的密钥意味着:
- 更小的证书 → TLS 握手时传输更少的数据
- 更快的签名验证 → 更低的 CPU 负载
- 更低的带宽消耗 → 对高流量站点和移动端连接尤为重要
更快的握手
ECDSA 签名操作比 RSA 显著更快,尤其在服务器端。对于高流量站点,这减少了 CPU 使用和首字节时间。
前向保密
现代 TLS 使用 ECDHE(临时椭圆曲线 Diffie-Hellman)进行密钥交换,无论你的证书类型如何。但 ECC 证书与 ECDHE 天然配对——整个握手都使用椭圆曲线数学,比混合 RSA 和 ECDHE 更高效。
何时 RSA 仍有意义
旧设备兼容性
一些旧设备、嵌入式系统和物联网硬件不支持 ECC。如果你需要支持:
- Windows XP SP2 或更早版本
- 非常旧的 Android 版本(< 4.0)
- 某些嵌入式系统或硬件负载均衡器
…那么 RSA 2048 是更安全的选择。
组织要求
某些合规框架或内部政策可能指定使用 RSA。这种情况越来越少,但请检查你的要求。
实际采用情况
行业正从 RSA 迁移到 ECC:
| 机构 | 密钥类型 | 备注 |
|---|---|---|
| ECDSA P-256 | 所有 Google 资产 | |
| Cloudflare | ECDSA P-256 | 所有免费计划证书的默认值 |
| Facebook / Meta | ECDSA P-256 | 生产 Web 服务器 |
| Let’s Encrypt | 推荐 ECDSA | 两者都签发,推荐 ECC |
| ZeroSSL | ECDSA 增长中 | ECC 签发量增长 51.1%(所有 CA 中增长最快) |
如何检查你的站点使用什么
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null \
| openssl x509 -noout -text | grep "Public Key Algorithm"
# ECDSA: "id-ecPublicKey"
# RSA: "rsaEncryption"
或者在浏览器中查看:锁头图标 → 证书 → 详情 → 主题公钥信息。
GetHTTPS 使用什么
GetHTTPS 默认为证书生成 ECDSA P-256 密钥,ACME 账户密钥也使用 P-256。如果需要,你可以为证书密钥选择 RSA 2048。
P-256(也称为 prime256v1 或 secp256r1)具有以下特点:
- 所有现代浏览器和服务器都支持
- Let’s Encrypt 推荐
- 大多数高流量网站使用(Google、Cloudflare 等)
- Web Crypto API 支持(GetHTTPS 用于密钥生成)
后量子计算考虑
ECC 和 RSA 都不具备量子安全性。足够强大的量子计算机可以利用 Shor 算法破解两者。行业正在通过开发后量子密钥交换(ML-KEM,前称 Kyber)为 TLS 做准备,将以混合模式与现有算法配合使用。
这不影响你今天的证书选择——向后量子的迁移将在协议层(TLS)发生,而非证书层。现在使用 ECC,让 TLS 协议栈处理过渡。
常见问题
能从 RSA 切换到 ECC(或反之)吗?
可以。生成一张使用所需密钥类型的新证书并替换服务器上的文件即可。服务器不关心之前的证书使用什么算法。
Web 服务器需要为 ECC 做特殊配置吗?
不需要。Nginx 和 Apache 处理 ECC 证书的方式与 RSA 相同——相同的指令、相同的文件格式(PEM)。服务器会自动检测密钥类型。
P-384 比 P-256 更好吗?
P-384 提供约 192 位安全性,而 P-256 约 128 位。实际上,128 位安全性远超当前(或可预见未来)的破解能力。P-256 更快且更广泛地被优化。除非你有特定的合规要求需要 P-384,否则使用 P-256。