一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Nginx 如何在 Nginx 中配置双证书并行支持 RSA 与国密 SSL 协同工作

时间:2026-08-17 12:02:49 编辑:袖梨 来源:一聚教程网

必须替换为国密增强版OpenSSL(如Tongsuo或GMSSL),编译定制Nginx,配置ssl_protocols与ssl_ciphers优先级,并按顺序加载SM2与RSA双证书,由客户端在ClientHello中自主协商算法栈。

要在 Nginx 中真正实现 RSA 与国密(SM2/SM3/SM4)双证书并行、协同工作,关键不是简单地把两个证书“都写上去”,而是构建一套基于客户端能力自动协商的双栈 TLS 服务。原生 Nginx + OpenSSL 完全不支持国密算法,必须先替换底层密码库,再配置协议与套件优先级,最后才涉及证书加载方式。

必须使用国密增强版 OpenSSL 替代库

标准 OpenSSL 和最新 Nginx 编译后无法识别 SM2 公钥、SM3 哈希或 SM4 加密套件。实际部署中必须选用以下任一国密分支:

  1. Tongsuo(铜锁):蚂蚁开源,TLS 1.3 国密支持稳定,社区活跃,推荐用于生产环境
  2. GMSSL:成熟度高,文档齐全,适合快速验证和中小项目

编译 Nginx 时需显式指定:--with-openssl=/path/to/tongsuo,而非系统自带 OpenSSL。验证是否生效:运行 tongsuo version 应显示含 sm2/sm3/sm4 的 cipher 列表;执行 openssl ecparam -list_curves | grep sm2 应有输出。

单 virtual host 内启用智能协商机制

不需要开多个端口、也不需要重复 server 块。所有逻辑集中在同一个 server { } 中,靠协议与套件控制握手路径:

  1. ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3:TLCP(国密传输层协议)对应 TLS 1.1,但保留 1.2/1.3 可确保国际浏览器兼容
  2. ssl_ciphers "TLS_SM4_SM3:ECDHE-SM4-SM3:AES128-GCM-SHA256":国密套件置前,国际套件紧随其后,由客户端在 ClientHello 中声明支持的 cipher 决定走哪条链路
  3. ssl_prefer_server_ciphers on:强制服务端主导套件选择,避免客户端低优先级套件干扰协商结果

双证书的两种主流模式及配置写法

根据合规要求和部署目标,主要有两类实践方式:

  1. 签名+加密双 SM2 证书(TLCP 合规必需):适用于政务、金融等强监管场景。需两套 SM2 证书——server_sign.crt/.key(身份认证与签名)和 server_enc.crt/.key(密钥交换)。Nginx 配置中使用 ssl_certificate_encssl_certificate_key_enc 指令(仅国密版 Nginx 支持)
  2. SM2 + RSA 双算法证书共存(兼顾合规与兼容):面向公众服务,要求 Chrome/Firefox 正常访问。此时需加载四份文件:ssl_certificatessl_certificate_key 各指定两次(先 SM2,后 RSA),Nginx 会按顺序尝试匹配客户端能力

示例(SM2+RSA 共存写法):

ssl_certificate /path/to/sm2_cert.pem;

ssl_certificate_key /path/to/sm2_key.key;

ssl_certificate /path/to/rsa_cert.pem;

ssl_certificate_key /path/to/rsa_key.key;

证书准备与格式要点

证书不是随便拿两个 PEM 文件就能用,需满足特定结构和格式要求:

  1. SM2 证书必须由 CFCA、沃通、DNSPod 国密版等具备资质的 CA 签发,且公钥类型明确为 id-ecPublicKey (1.2.840.10045.2.1) + curve sm2p256v1
  2. 私钥必须是未加密 PEM 格式,不可带 passphrase;生成命令应为:openssl ecparam -name sm2p256v1 -genkey -out server_sm2.key
  3. RSA 证书建议选用 Sectigo 或 DigiCert 等国际主流中级 CA,确保中间链完整,避免握手失败
  4. 若使用 DER 格式证书,需转为 PEM:openssl x509 -inform der -in cert.sm2 -out cert.pem

热门栏目