在 Nginx 中配置双 SSL 证书(例如同时支持 RSA 和 ECC 证书,或为不同域名/协议提供多个证书),是现代 HTTPS 服务中常见的需求,尤其适用于需要兼顾兼容性与高性能的场景。Nginx 自 1.19.4 版本起正式支持 ssl_certificate 和 ssl_certificate_key 指令的多次使用,从而实现多证书部署。
✅ 场景说明:什么是“双 SSL 证书”?
“双 SSL 证书”通常指以下两种情况之一:
- 混合加密算法证书共存(如 RSA + ECC)
- 目的:兼顾旧客户端兼容性(RSA)和新客户端性能优势(ECC)
- 单个服务器块绑定多个域名且各自拥有独立证书
- 目的:一个 server 块响应多个域名,每个域名使用其专属证书
⚠️ 注意:若仅为单一域名配置两个证书(如两个 RSA 证书),Nginx 将仅最后一个生效,除非结合 SNI 使用。
🔧 配置方法一:RSA + ECC 双证书(提升安全与性能)
✅ 适用场景:
- 网站需同时支持老旧浏览器(依赖 RSA)和现代浏览器(支持 ECC)
- 提升 TLS 握手效率,降低 CPU 占用
📁 准备文件:
rsa.key/rsa.crt—— RSA 私钥与证书链ecc.key/ecc.crt—— ECC(如 P-256)私钥与证书链
🛠️ Nginx 配置示例:
server {
listen 443 ssl http2;
server_name example.com;
# RSA 证书(主证书,兼容老客户端)
ssl_certificate /etc/nginx/ssl/rsa.crt;
ssl_certificate_key /etc/nginx/ssl/rsa.key;
# ECC 证书(优先用于支持的客户端)
ssl_certificate /etc/nginx/ssl/ecc.crt;
ssl_certificate_key /etc/nginx/ssl/ecc.key;
# 安全参数
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
# 其他设置
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_stapling on;
ssl_stapling_verify on;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
✅ 关键点解释:
- 多个
ssl_certificate和ssl_certificate_key对按顺序匹配。- 支持 TLS 1.3 的 Key Share 扩展,客户端可自主选择合适的密钥交换方式。
- 推荐将 ECC 证书放在后面以优先协商更高效的 ECDSA。
🔧 配置方法二:基于 SNI 的多域名多证书
✅ 适用场景:
- 同一 IP 绑定多个域名(如
site-a.com,site-b.com) - 每个域名有独立的 SSL 证书(可为不同类型)
🛠️ Nginx 配置示例:
server {
listen 443 ssl http2;
server_name site-a.com;
ssl_certificate /etc/nginx/ssl/site-a.crt;
ssl_certificate_key /etc/nginx/ssl/site-a.key;
root /var/www/site-a;
}
server {
listen 443 ssl http2;
server_name site-b.com;
ssl_certificate /etc/nginx/ssl/site-b-ecc.crt;
ssl_certificate_key /etc/nginx/ssl/site-b-ecc.key;
root /var/www/site-b;
}
✅ 此模式依赖于 SNI(Server Name Indication),几乎所有现代客户端均支持。
❗注意事项
| 项目 | 说明 |
|---|---|
| Nginx 版本要求 | 必须 ≥ 1.19.4 才能正确支持多证书语法 |
| SNI 支持 | 客户端必须支持 SNI,否则无法区分证书 |
| OCSP Stapling | 若启用,请确保所有证书都可通过 stapling 验证 |
| 证书链完整性 | 每个.crt文件应包含完整的证书链(服务器证书 + 中级 CA) |
🔍 如何验证双证书是否生效?
使用 OpenSSL 命令测试:
# 测试 RSA 是否可用
openssl s_client -connect example.com:443 -servername example.com -cert_rsa_key
# 测试 ECC 是否协商成功
openssl s_client -connect example.com:443 -servername example.com -cipher ECDHE-ECDSA-AES128-GCM-SHA256
或使用在线工具检测:
- https://www.ssllabs.com/ssltest/ (可查看实际协商的证书类型)
💡 推荐产品:适配双证书策略的 SSL 证书选型
以下是支持生成 ECC/RSA 双证书、满足高安全等级需求的推荐选项:
| 产品名称 | 参考价格 | 证书类型 | 适用场景 |
|---|---|---|---|
| DigiCert Secure Site Pro OV SSL | 13800元/年 | OV, 支持 RSA/ECC 双栈 | 适用于需要最高信任度的金融机构、大型电商平台 |
| GlobalSign OrganizationSSL | 3980元/年 | OV, 支持 ECC 256/384 | 适用于中型企业官网、政务系统 |



京公网安备11010502031690号
网站经营企业工商营业执照
















