首页/安全/等保与合规速查/国密 TLS 在 Nginx 上的落地路径
密码与认证合规50 条

国密 TLS 在 Nginx 上的落地路径

Nginx 原生不支持国密套件:需要国密 TLS 库(如 Tongsuo 铜锁及对应模块)或使用支持国密的发行版与网关设备,部署后用客户端命令验证协商结果。

等保与合规速查安全更新于 2026-10-13

Nginx 与国密 TLS

Nginx 原生不支持国密 TLS 套件,它的 TLS 能力来自编译时链接的加密库。要让它支持 SM2/SM3/SM4,需要换成具备国密能力的 TLS 库(例如蚂蚁集团开源的 Tongsuo 铜锁)并配套模块与配置,或者在前端部署国密网关设备完成加解密卸载。改造前先确认客户端能力与业务是否需要全站国密,避免改造完成却无人能连。

基本信息

适用平台Linux 上的 Nginx / OpenResty 或国密网关设备
常见方案Tongsuo 编译 Nginx、国密网关卸载、独立国密入口
证书要求签名证书与加密证书的双证书体系
验证方式openssl s_client 或国密版客户端观察协商结果
注意事项指令名与套件名随实现不同,以发行版与厂商文档为准

典型使用场景

  • 密评整改:让对外服务的传输链路使用国密套件
  • 行业要求:金融、政务类系统被要求使用国密算法
  • 内网入口改造:先在高敏感链路试点,再考虑全站推广
  • 网关卸载:业务不便改造时用前置设备统一处理
  • 联调验证:用命令行确认协商结果确实是国密套件

落地路线

落地路线
路线 1:使用集成国密能力的 TLS 库(如 Tongsuo)编译 Nginx 或网关
路线 2:前置国密网关 / 负载均衡设备,由设备完成国密卸载
路线 3:暂不覆盖全站时,将高敏感链路接入独立国密入口
路线 4:内部调用链路先启用国密,对外保留兼容通道并受控
共同要求:双证书齐备、有效期监控、回退策略受控并留日志

验证命令示例

验证命令示例
# 观察协商协议与套件(启用国密后输出含 SM 字样)
openssl s_client -connect demo.example.com:443 \
  -servername demo.example.com </dev/null 2>/dev/null | grep -iE "cipher|protocol"
# 国密版实现通常还提供专用客户端或编译时开启的国密套件
# 具体参数随实现不同,务必以所用发行版与厂商手册为准

方案对比

方案适合场景代价
自编译国密 TLS 库可控性强,适合自有运维团队升级与补丁需自行跟进
国密网关卸载业务系统改造代价大时引入额外设备与延迟
独立国密入口只覆盖高敏感链路多入口带来配置与证书管理复杂度
改造前先确认客户端能力:如果前端、App 与第三方对接方都不支持国密套件,需要设计明确且受控的降级策略,并记录在案。

易错点

  • 以为升级 OpenSSL 就自动支持国密:需要库、模块与配置三处都到位
  • 双端能力不一致:客户端不支持时若无明确降级策略,会出现随机连接失败
  • 只改服务端不做验证:上线后未用命令行确认协商结果,可能仍在用非国密套件
  • 双证书管理脱节:签名证书与加密证书有效期不同步,握手阶段才会暴露问题

数据来源与参考

  • OpenSSL / Tongsuo 项目文档
  • GM/T 0024-2014
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌