国密双栈方案对比:Angie、Tengine、现网 nginx

国密双栈方案对比:Angie、Tengine、现网 nginx

记录时间:2026-11-05
对比对象:现网 nginx(106.109 实测)、Tengine 3.2.0-rc5(测试机四条 TLS 路径已验证,360 浏览器未验收)、Angie 1.12.4(测试机四条 TLS 路径与 360 浏览器均通过)

一、结论

自建改造路线里,Angie 综合最优:国密与会话保持都是内置能力,维护由 nginx 核心团队负责,GA 发布正常。Tengine 能实现同样效果,四条 TLS 路径已在测试机验证,但卡在 RC 版本和单点维护上,适合作为兜底。现网 nginx 无法提供国密,只能当回滚基线。

如果等保或密评要求密钥存放于密码机,三者都不满足,需要另评估前置国密网关。

二、三方基本情况

项 现网 nginx Tengine Angie
版本 gzeport/1.28.1(自定义构建) Tengine/3.2.0-rc5(nginx 1.31.5 基座) Angie/1.12.4(nginx 1.31.2 基座)
TLS 库 OpenSSL 1.1.1w(静态编译) Tongsuo 8.5.0(OpenSSL 3.5.4 基线) Tongsuo 8.5.0(OpenSSL 3.5.4 基线)
编译工具链 gcc 4.8.5(CentOS 7) gcc 7.3.0(Kylin V10) gcc 7.3.0(Kylin V10)
国密能力 无 有(enable_ntls + ssl_sign_certificate/ssl_enc_certificate) 有(ssl_ntls on + 双参数 ssl_certificate)
国密模块来源 无 需 --add-module=modules/ngx_tongsuo_ntls 内置(编译加 --with-ntls)
会话保持 第三方 nginx-sticky-module-1.2.6,裸 sticky; 旧模块 session_sticky,需 --add-module 内置 sticky cookie route;
维护方 内部自定义构建 阿里社区,提交集中于单一维护者 nginx 核心团队(VBart 等)
最近 GA 1.28.1(内部构建,时间待确认) 3.1.0(2023-10),3.2.0 仍为 RC 1.12.4(2026-10-16)
测试机验证 未做国密验证 四条 TLS 路径通过;360 浏览器未验收(测试证书编码问题) 四条 TLS 路径与 360 浏览器均通过

三、切换过程与门槛

步骤 现网 nginx Tengine Angie
源码与依赖 不涉及 Tongsuo + Tengine 源码;需 Text::Template Tongsuo + Angie 源码;需 Text::Template
编译参数 不涉及 两个 --add-module,--api=1.1.1 可选 一个 --with-ntls,--sbin-path 保持原名
配置改动(每个 server) 无 加 enable_ntls on + 4 条证书指令 加 ssl_ntls on + 2 条双参数证书指令
会话保持改动 无 7 处 sticky; → session_sticky; 7 处 sticky; → sticky cookie route;
二进制名 sbin/nginx 默认 tengine,需软链或改脚本 可用 --sbin-path=sbin/nginx 保持原名
回滚 不需要 换回原 sbin/nginx 二进制 换回 sbin/nginx.old
门槛评级 无(但无国密) 中高(RC 版本 + 两模块 + 改名) 中(内置能力 + 语法迁移)

结论:两套改造的配置改动量接近,差别在编译依赖和版本成熟度。Angie 少一个模块依赖,二进制路径可以保持原名;Tengine 多一层旧模块挂载,且用的是 RC。

四、漏洞与更新频率

项 现网 nginx Tengine Angie
Web 服务器更新 1.28 稳定分支,主线已到 1.31.x,稳定分支补丁状态需向维护方确认 3.2.0 连续 RC(2026-08 至 09),无 GA;3.1.0 GA 停留在 2023-10 1.12.2 至 1.12.4 集中在 2026-09 至 10,GA 节奏正常
TLS 库更新 OpenSSL 1.1.1w(2023-09 最后版本,1.1.1 分支已 EOL) Tongsuo 8.5.0(2026-09-30) Tongsuo 8.5.0(2026-09-30)
安全补丁来源 依赖内部构建方 依赖社区单一维护者跟进 nginx CVE nginx 核心团队 + Tongsuo 社区
已知配置风险 enable-weak-ssl-ciphers 开启,弱套件可用 同左,建议一并关闭 同左,建议一并关闭
更新评估 最差:TLS 库已停止维护,Web 服务器补丁依赖内部 中:开发活跃但无 GA,补丁回流看维护者 最好:GA 频繁,团队维护

Tengine 的 RC 不等于质量差,测试机四条 TLS 路径全部通过。但生产上出安全公告时,补丁只在 RC 分支,要么跟进 RC,要么等 GA,两条路都不好走。

Tongsuo 的节奏也要算进去:8.4.0 发布于 2023-12,8.5.0 到 2026-09 才发布,版本间隔偏长。选它就要接受国密库本身的更新节奏由社区决定。

五、影响程度

维度 现网 nginx Tengine Angie
二进制 不变 整机替换(nginx 家族内) 整机替换(nginx 家族内)
配置文件 不变 每个对外 server 加 4 行 TLS,7 处 sticky 改名 每个对外 server 加 3 行 TLS,7 处 sticky 改语法
会话保持语义 不变 默认 cookie 名同为 route,实现不同,切换时一次性重新粘滞 同左,cookie 值格式为 sid,一次性重新粘滞
日志格式 不变 现有 aka_logs 不受影响 同左
回滚成本 无 换回旧二进制 + 旧配置,分钟级 同左
影响面评级 无 中(TLS 栈 + 会话保持 + 二进制) 中(同上,模块依赖更少)

两套方案的影响都集中在 TLS 栈和会话保持。日志、路由、upstream 结构不动,回滚都是换二进制加旧配置,分钟级可恢复。

六、匹配度

需求 现网 nginx Tengine Angie
SM2/RSA 同端口双栈 不支持 支持(四条 TLS 路径已验证) 支持(四条 TLS 路径已验证)
国密浏览器 TLCP 双证书 不支持 支持(签名 + 加密证书;360 浏览器未验收) 支持(签名 + 加密证书,360 浏览器已通过)
7 个 upstream 会话保持 支持(第三方模块) 支持(旧模块,需改名) 支持(内置,需改语法)
130 个 server 块配置兼容 基准 兼容(nginx 语法) 兼容(官方声明直接替代)
现有日志格式 基准 兼容 兼容
stream 层会话保持 未使用 内置可用(STREAM_UPSTREAM_STICKY=YES) 内置可用(同左)
等保配合度 低(无国密 + 弱套件) 中(国密可用,版本非 GA) 中高(国密可用,版本 GA)

两个改造方案都基于 Tongsuo,对国密证书的要求相同:必须是 id-ecPublicKey + SM2 标准编码。Tongsuo 自带 openssl 生成的证书(公钥算法 OID 直接写成 SM2)会被 360 国密浏览器拒绝,表现为握手到 ServerKeyExchange 后回 alert 50。这一点不影响选型,但采购证书时要写进需求:签名与加密两张、标准编码、SAN 含域名。

七、综合评分

按本次验证结果打分,权重可按项目实际调整:

维度 权重 现网 nginx Tengine Angie
国密能力 25 0 22 24
可维护性与漏洞更新 25 10 10 22
切换门槛 20 20(不切换) 12 13
变更影响面 15 15(不变更) 10 11
配置与功能匹配度 15 5 12 13
合计 100 50 66 83

现网 nginx 的”切换门槛”和”影响面”得分高,是因为它什么都不用改,但它不满足国密这个前提,所以总分低。如果只看”能满足国密的双栈方案”,实际是在 Tengine 66 分和 Angie 83 分之间选。

八、建议

  1. 首选 Angie 1.12.4:内置能力、维护正常、配置写法更简洁。测试机已完成四条 TLS 路径与 360 浏览器验收,迁移到生产的增量工作主要是 sticky 语法和运行用户。
  2. Tengine 作为兜底:如果 Angie 在某些边缘配置上出现兼容问题,Tengine 的验证记录和命令可以直接复用,切换成本低。
  3. 现网 nginx 保留为回滚基线:改造不动它的配置目录,出问题时切回原二进制即可。
  4. 前置条件先确认:等保是否强制密钥进密码机;厂家 SM2 证书是否含签名与加密两张及完整链;生产架构与源码获取方式;变更窗口。
  5. 迁移注意三点:sticky; 到 sticky cookie route; 的语法变化会带来一次性会话重粘滞;运行用户从 root 切 gzapps 要同步改配置和目录属主;弱加密套件建议关闭,但要在灰度期观察老客户端。

九、参考资料

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇