国密(SM2)与国际(RSA)双证书模式的核心在于  “双轨制”  部署与  “智能适配”  。它通过在服务器上同时配置两套证书,并依据客户端(浏览器)的支持能力自动选择最优的加密通道,从而在满足国家合规要求的同时,确保全球用户的访问体验。

一、核心概念与驱动:为何需要“双轨制”?

双证书模式:指在单一服务器上同时部署符合国家标准的国密SM2证书和全球通用的RSA/ECC国际算法证书。

智能适配:服务器能自动识别并协商加密算法。国密浏览器访问时,优先建立SM2加密通道;而国际浏览器则无缝切换到RSA通道。

这一模式主要受到两大驱动力的影响:

合规驱动:我国《密码法》等法规明确要求关键信息基础设施、金融、政务等领域完成密码技术的国产化改造。

兼容驱动:Chrome、Safari等主流浏览器本身不支持国密算法。双证书模式是同时满足合规和全球访问的现实解决方案。

二、系统架构与流程

一个典型的双证书系统包含以下几个关键组件:

服务端:Web服务器(如Nginx/Apache)需集成国密支持组件(如铜锁Tongsuo密码库)。

客户端:用户的浏览器。国内生态如奇安信、360等可原生支持国密;国际浏览器则依赖RSA证书进行安全通信。

证书:需要同时申请并配置国密SM2证书和国际RSA/ECC证书。

其智能适配的核心流程如下:

1.    发起连接:客户端(浏览器)向服务器发起HTTPS连接请求。

2.    算法协商:服务器通过SSL/TLS握手协议与客户端协商,自动检测其对算法的支持情况。

3.    分发证书:基于协商结果,服务器智能地分发对应的证书链。

        国密通道:若客户端支持国密,使用SM2/SM3/SM4算法,并优先建立国密SSL/TLS协议(GMSSL)通道。

        国际通道:若客户端不支持国密,则自动回退至RSA/ECC算法和标准TLS协议。

4.    建立加密链路:使用协商确定的算法,在客户端与服务器之间建立安全的加密通信链路。

三、部署方案:三种路径

部署双证书方案主要有三种路径,适用性有所不同:

Web服务器集成(推荐用于新项目):直接在Nginx或Apache等Web服务器上集成国密支持组件。

SSL网关/反向代理(推荐用于现有系统):在原Web服务器前部署独立的SSL网关,业务系统几乎无需改造。

负载均衡器集成:在云平台的负载均衡(LB)或CDN服务上直接配置双证书,集成度最高,但灵活性相对受限。

四、智能适配原理:SNI  与算法协商

智能适配主要依赖TLS/SSL协议中的  服务器名称指示(SNI)  扩展和  加密套件(Cipher  Suite)  协商机制实现。当国密浏览器发起连接时,其Client  Hello消息中会携带国密专用的加密套件(如`ECC-SM4-CBC-SM3`),服务器收到后会优先选择国密证书;若收到的Client  Hello中只包含国际通用套件,则自动切换为RSA证书。

五、主流国密浏览器生态

以下浏览器是国密生态的核心支持者:

浏览器名称      开发厂商      国密支持  

360安全浏览器          奇虎360      原生支持SM2/RSA双算法自适应  

奇安信可信浏览器          奇安信      原生支持国密算法及双证书切换  

红莲花安全浏览器          海泰方圆      原生支持国密SSL双向链接  

零信浏览器          零信技术      全面支持国密双证书和单证书  

密信浏览器          密信科技      同时支持国密算法和国际算法  

赢达信速龙安全浏览器            赢达信      支持国密HTTPS加密  

国际浏览器如Chrome、Firefox等,通过该方案也可以实现RSA兼容访问。

六、证书管理:申请与自动化

申请:可向沃通(WoTrus)、天威诚信(iTrusChina)、CFCA等合规的CA机构同时申请SM2和RSA双证书。

自动化:建议使用国密ACME协议或零信国密HTTPS加密自动化网关等网关类产品,实现证书的自动化申请、部署和续期,避免人工管理。

七、部署实战与配置详解

这里以最常用的  Nginx  和  Tengine  为例进行说明。

关键工具:Tongsuo(铜锁)密码库

无论是Nginx还是Tengine,核心都离不开一个支持国密算法的底层密码库。其中,由蚂蚁集团开源的  **铜锁(Tongsuo)  是一个被广泛采用的解决方案。它提供了国密算法的完整实现,并已与Nginx、Tengine等主流Web服务器完成适配。

方案一:Nginx  +  Tongsuo

这是最通用和灵活的手动集成方案,步骤如下:

1.    环境准备:准备一台Linux服务器,确保其可以编译安装软件。

2.    编译安装  Tongsuo:从GitHub获取Tongsuo源码,编译并安装到系统。

3.    编译安装  Nginx:下载Nginx源码,在编译时通过  `--with-openssl`  参数指定使用已安装的Tongsuo源码目录,使Nginx获得国密能力。

4.    配置文件  (nginx.conf):在`server`块中,关键的配置如下:

        nginx

        server  {

                listen  443  ssl;

                server_name  your-domain.com;

                #  关键:启用国密NTLS支持

                enable_ntls  on;

                #  配置国际RSA证书(兼容国际浏览器)

                ssl_certificate          /path/to/rsa_cert.pem;

                ssl_certificate_key  /path/to/rsa_key.pem;

                #  配置国密双证书(签名证书  +  加密证书)

                ssl_sign_certificate          /path/to/sm2_sign_cert.pem;

                ssl_sign_certificate_key  /path/to/sm2_sign_key.pem;

                ssl_enc_certificate          /path/to/sm2_enc_cert.pem;

                ssl_enc_certificate_key  /path/to/sm2_enc_key.pem;

                #  配置加密套件,将国密套件放在前面

                ssl_ciphers  ECC-SM4-CBC-SM3:ECDHE-SM4-CBC-SM3:RSA-SM4-CBC-SM3:...;

              #  其他常规SSL配置...

        }

        方案二:Tengine  +  Tongsuo

如果使用阿里云的Tengine,部署会更简单,因为Tengine已经集成了对Tongsuo的支持。主要步骤为:

1.    安装Tongsuo:同样需要先安装Tongsuo密码库。

2.    安装Tengine:直接安装或从源码编译Tengine,其构建脚本能自动检测并使用Tongsuo。

3.    配置文件:配置方法与Nginx方案完全相同,如上所示。

注意事项

证书文件格式:确保所有私钥文件为未加密的PEM格式。

根证书信任:确保国密浏览器已预置了签发您国密证书的CA根证书。

性能考量:SM2算法计算速度更快,但引入双证书会增加握手时的计算开销。

降级回退:务必测试并确保在国密证书异常时,系统能正常降级到RSA算法,保障业务连续性。国密(SM2)与国际(RSA)双证书模式的核心在于  “双轨制”  部署与  “智能适配”  。它通过在服务器上同时配置两套证书,并依据客户端(浏览器)的支持能力自动选择最优的加密通道,从而在满足国家合规要求的同时,确保全球用户的访问体验。

八、核心概念与驱动:为何需要“双轨制”?

双证书模式:指在单一服务器上同时部署符合国家标准的国密SM2证书和全球通用的RSA/ECC国际算法证书。

智能适配:服务器能自动识别并协商加密算法。国密浏览器访问时,优先建立SM2加密通道;而国际浏览器则无缝切换到RSA通道。

这一模式主要受到两大驱动力的影响:

合规驱动:我国《密码法》等法规明确要求关键信息基础设施、金融、政务等领域完成密码技术的国产化改造。

兼容驱动:Chrome、Safari等主流浏览器本身不支持国密算法。双证书模式是同时满足合规和全球访问的现实解决方案。

九、系统架构与流程

一个典型的双证书系统包含以下几个关键组件:

服务端:Web服务器(如Nginx/Apache)需集成国密支持组件(如铜锁Tongsuo密码库)。

客户端:用户的浏览器。国内生态如奇安信、360等可原生支持国密;国际浏览器则依赖RSA证书进行安全通信。

证书:需要同时申请并配置国密SM2证书和国际RSA/ECC证书。

其智能适配的核心流程如下:

1.    发起连接:客户端(浏览器)向服务器发起HTTPS连接请求。

2.    算法协商:服务器通过SSL/TLS握手协议与客户端协商,自动检测其对算法的支持情况。

3.    分发证书:基于协商结果,服务器智能地分发对应的证书链。

        国密通道:若客户端支持国密,使用SM2/SM3/SM4算法,并优先建立国密SSL/TLS协议(GMSSL)通道。

        国际通道:若客户端不支持国密,则自动回退至RSA/ECC算法和标准TLS协议。

4.    建立加密链路:使用协商确定的算法,在客户端与服务器之间建立安全的加密通信链路。

十、部署方案:三种路径

部署双证书方案主要有三种路径,适用性有所不同:

Web服务器集成(推荐用于新项目):直接在Nginx或Apache等Web服务器上集成国密支持组件。

SSL网关/反向代理(推荐用于现有系统):在原Web服务器前部署独立的SSL网关,业务系统几乎无需改造。

负载均衡器集成:在云平台的负载均衡(LB)或CDN服务上直接配置双证书,集成度最高,但灵活性相对受限。

十一、智能适配原理:SNI  与算法协商

智能适配主要依赖TLS/SSL协议中的  **服务器名称指示(SNI)  扩展和  加密套件(Cipher  Suite)  协商机制实现。当国密浏览器发起连接时,其Client  Hello消息中会携带国密专用的加密套件(如`ECC-SM4-CBC-SM3`),服务器收到后会优先选择国密证书;若收到的Client  Hello中只包含国际通用套件,则自动切换为RSA证书。

十二、主流国密浏览器生态

以下浏览器是国密生态的核心支持者:

浏览器名称      开发厂商      国密支持  

360安全浏览器          奇虎360      原生支持SM2/RSA双算法自适应  

奇安信可信浏览器          奇安信      原生支持国密算法及双证书切换  

红莲花安全浏览器        海泰方圆      原生支持国密SSL双向链接  

零信浏览器          零信技术    全面支持国密双证书和单证书  

密信浏览器          密信科技      同时支持国密算法和国际算法  

赢达信速龙安全浏览器          赢达信      支持国密HTTPS加密  

国际浏览器如Chrome、Firefox等,通过该方案也可以实现RSA兼容访问。

十三、证书管理:申请与自动化

申请:可向沃通(WoTrus)、天威诚信(iTrusChina)、CFCA等合规的CA机构同时申请SM2和RSA双证书。

自动化:建议使用国密ACME协议或**零信国密HTTPS加密自动化网关**等网关类产品,实现证书的自动化申请、部署和续期,避免人工管理。

十四、部署实战与配置详解

这里以最常用的  Nginx  和  Tengine  为例进行说明。

关键工具:Tongsuo(铜锁)密码库

无论是Nginx还是Tengine,核心都离不开一个支持国密算法的底层密码库。其中,由蚂蚁集团开源的  铜锁(Tongsuo)  是一个被广泛采用的解决方案。它提供了国密算法的完整实现,并已与Nginx、Tengine等主流Web服务器完成适配。

方案一:Nginx  +  Tongsuo

这是最通用和灵活的手动集成方案,步骤如下:

1.    环境准备:准备一台Linux服务器,确保其可以编译安装软件。

2.    编译安装  Tongsuo:从GitHub获取Tongsuo源码,编译并安装到系统。

3.    编译安装  Nginx:下载Nginx源码,在编译时通过  `--with-openssl`  参数指定使用已安装的Tongsuo源码目录,使Nginx获得国密能力。

4.    配置文件  (nginx.conf):在`server`块中,关键的配置如下:

        nginx

        server  {

                listen  443  ssl;

                server_name  your-domain.com;

                #  关键:启用国密NTLS支持

                enable_ntls  on;

                #  配置国际RSA证书(兼容国际浏览器)

                ssl_certificate          /path/to/rsa_cert.pem;

                ssl_certificate_key  /path/to/rsa_key.pem;

                #  配置国密双证书(签名证书  +  加密证书)

                ssl_sign_certificate          /path/to/sm2_sign_cert.pem;

                ssl_sign_certificate_key  /path/to/sm2_sign_key.pem;

                ssl_enc_certificate          /path/to/sm2_enc_cert.pem;

                ssl_enc_certificate_key  /path/to/sm2_enc_key.pem;

                #  配置加密套件,将国密套件放在前面

                ssl_ciphers  ECC-SM4-CBC-SM3:ECDHE-SM4-CBC-SM3:RSA-SM4-CBC-SM3:...;

                #  其他常规SSL配置...

        }

方案二:Tengine  +  Tongsuo

如果使用阿里云的Tengine,部署会更简单,因为Tengine已经集成了对Tongsuo的支持。主要步骤为:

1.    安装Tongsuo:同样需要先安装Tongsuo密码库。

2.    安装Tengine:直接安装或从源码编译Tengine,其构建脚本能自动检测并使用Tongsuo。

3.    配置文件:配置方法与Nginx方案完全相同,如上所示。

注意事项

证书文件格式:确保所有私钥文件为未加密的PEM格式。

根证书信任:确保国密浏览器已预置了签发您国密证书的CA根证书。

性能考量:SM2算法计算速度更快,但引入双证书会增加握手时的计算开销。

降级回退:务必测试并确保在国密证书异常时,系统能正常降级到RSA算法,保障业务连续性。