nginx ≥1.11.0 且 openssl ≥1.0.2 是启用 ecc 证书的硬性前提;需生成 secp256r1 私钥、由支持 ecdsa 的 ca 签发证书,配置 ssl_certificate 与 ssl_certificate_key 指向 ecc 文件,启用 tlsv1.2+ 并指定含 ecdhe-ecdsa 的 cipher 套件。

直接配置 Nginx 使用 ECC 证书本身就能提升 TLS 握手速度和移动端性能,但必须满足几个关键前提——不是简单替换证书文件就能生效。
确认环境是否支持 ECC
Nginx 必须 ≥1.11.0,OpenSSL 必须 ≥1.0.2(推荐 1.1.1 或 3.x)。这两个版本是硬性门槛,低于则完全无法识别 ECC 私钥或完成 ECDSA 协商。
- 运行 nginx -v 查看 Nginx 版本
- 运行 nginx -V 2>&1 | grep -i openssl 查看编译时 OpenSSL 版本
- 运行 openssl version 查看系统当前 OpenSSL 版本
- 三者需全部达标,且编译时与运行时 OpenSSL 版本尽量一致
生成并获取合法 ECC 证书
ECC 不能复用 RSA 私钥,也不能用自签名证书(除非内网调试),否则浏览器会报错或降级到 RSA。生产环境应使用主流 CA 签发的 ECDSA 证书。
- 生成 P-256(secp256r1)私钥:openssl ecparam -name secp256r1 -genkey -out example.com.key
- 生成 CSR:openssl req -new -key example.com.key -out example.com.csr
- 向支持 ECDSA 的 CA 提交 CSR(如 Let’s Encrypt、Sectigo、ZeroSSL)
- 确保签发的证书含完整链(fullchain.pem),且 Subject 和所有 SAN 与你后续要配的 RSA 证书完全一致(如果后续要双证书)
Nginx 配置 ECC 证书的核心写法
只需在 server 块中指定 ECC 证书和私钥路径,并启用 TLS 1.2+ 协议即可,无需额外模块。
- 证书路径示例(按实际调整):ssl_certificate /etc/nginx/ssl/example.com.fullchain_ecc.pem;
- 私钥路径示例:ssl_certificate_key /etc/nginx/ssl/example.com.key;
- 必须启用现代协议:ssl_protocols TLSv1.2 TLSv1.3;
- 私钥不能设密码,否则 Nginx 启动失败
搭配合适的密码套件以激活 ECC 优势
即使证书是 ECC,若 cipher suite 不含 ECDSA 密钥交换方式,客户端仍可能回退到 RSA 路径,失去性能收益。
- 推荐配置(兼顾安全与兼容):ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305;
- 若同时部署 RSA 证书,可扩展为双算法套件,但仅用 ECC 时保持精简更稳妥
- 禁用不安全旧套件,例如不含 SSLv3、TLSv1.0、RC4、MD5 相关项











