国密SSL证书(即基于SM2/SM3/SM4算法的SSL/TLS证书)是实现网络通信国产化加密、满足国内监管合规(如等保2.0、金融行业安全要求)的关键技术。下面是其核心概念、申请部署流程及注意事项的详细实践流程。

一、国密SSL证书简介

特点  说明  

算法体系 SM2(非对称加密/签名)、SM3(摘要算法)、SM4(对称加密)[reference:0]  

核心标准 GM/T  0024‑2014《SSL  VPN技术规范》、GM/T  0025‑2014《SSL  VPN协议》等  

证书类型 双证书体系:签名证书(用于身份验证)  +  加密证书(用于密钥交换)[reference:1]

主要CA   CFCA(中国金融认证中心)、SHECA(上海数字证书认证中心)等[reference:2]  

适用场景 政府/事业单位、金融/支付系统、国企/央企内部系统、公共服务平台等[reference:3]  

二、证书申请流程

1.    选择CA:向支持国密算法的CA(如CFCA、SHECA)提交申请。

2.    生成CSR:使用支持SM2的工具(如GmSSL)生成密钥对和CSR。

        CSR中需指定SM2算法参数。

3.    提交审核:提供域名/组织信息,CA审核后签发证书。

4.    下载证书:通常获得两个证书文件(签名证书、加密证书)及对应的私钥。

三、部署实践(以Nginx为例)

>  以下以CentOS  7  +  Nginx  1.24.0  为例,详细步骤参考华为云官方指南[reference:4]。

1.  环境准备

安装国密版OpenSSL(GmSSL):

bash

    下载并解压gmssl_openssl

    tar  xzfm  gmssl_openssl_b2025.xxxx_x64.tar.gz  -C  /usr/local

    设置环境变量(可选)

    export  PATH=/usr/local/gmssl/bin:$PATH

    编译支持国密的Nginx**:

    bash

    ./configure  \

        --without-http_gzip_module  \

        --with-http_ssl_module  \

        --with-http_stub_status_module  \

        --with-http_v2_module  \

        --with-file-aio  \

        --with-openssl="/usr/local/gmssl"  \

        --with-cc-opt="-I/usr/local/gmssl/include"  \

        --with-ld-opt="-lm"

    make  install

    2.  证书文件准备

文件  作用  

`server.crt`  签名证书(含中间CA)  

`server.key`  签名证书私钥(EC格式)  

`encrypt.crt`    加密证书  

`encrypt.key`  加密证书私钥(EC格式)  

将以上文件放置于Nginx配置目录下的  `cert/`  文件夹中(例如  `/usr/local/nginx/conf/cert/`)[reference:5]。

3.  配置Nginx

在  `nginx.conf`  的  `server`  块中配置双证书:

```nginx

server  {

        listen  443  ssl;

        server_name  your-domain.com;

签名证书

        ssl_certificate  cert/server.crt;

        ssl_certificate_key  cert/server.key;


        加密证书

        ssl_certificate  cert/encrypt.crt;

        ssl_certificate_key  cert/encrypt.key;


        ssl_session_cache  shared:SSL:1m;

        ssl_session_timeout  5m;

        ssl_protocols  TLSv1  TLSv1.1  TLSv1.2;

        ssl_ciphers  ECDHE-SM2-SM4-CBC-SM3:ECDHE-SM2-SM4-GCM-SM3;

        ssl_prefer_server_ciphers  on;


        location  /  {

                root  html;

                index  index.html  index.htm;

        }

}

>  注意:`ssl_ciphers`  需指定国密套件,如  `ECDHE‑SM2‑SM4‑CBC‑SM3`  或  `ECDHE‑SM2‑SM4‑GCM‑SM3`。

4.  重启Nginx并验证

bash

/usr/local/nginx/sbin/nginx  -t    #  检查配置

/usr/local/nginx/sbin/nginx  -s  reload    #  重载服务

使用支持国密的浏览器(如360安全浏览器国密版)访问  `https://your-domain.com`,查看证书详情是否显示SM2算法。

四、客户端配置与兼容性

客户端类型  支持情况  |  配置要点  

浏览器 360安全浏览器国密版、红莲花浏览器、奇安信浏览器等[reference:6]  需预置国密CA根证书;国际浏览器(Chrome/Firefox)默认不支持  

移动端 需集成国密库(如GmSSL  for  Android/iOS)  在代码中指定SM2/SM3/SM4算法套件  

其他客户端 使用国密SSL库(如GmSSL、Bouncy  Castle国密扩展)  改造SSL实现,替换原有RSA/AES算法  

五、关键注意事项

1.    双证书部署:国密SSL协议要求同时使用签名证书和加密证书[reference:7]。

2.    浏览器兼容:普通浏览器不支持国密算法,建议**同时部署国际证书(RSA/ECC)和国密证书**,通过协议协商自动切换[reference:8]。

3.    性能优化:SM2算法性能与RSA-2048相当,但首次部署时可考虑启用硬件加速(如国密硬件密码设备)[reference:9]。

4.    服务器环境:优先选择国产服务器/中间件(如东方通TongWeb)、改造后的Nginx/Apache;避免使用IIS、未集成国密库的原生Tomcat等[reference:10]。

5.    证书链验证:部署时需包含中级CA证书,确保客户端能完整验证证书链[reference:11]。

6.    监管合规:国密证书主要用于满足等保2.0、金融行业安全要求等国产化替代场景[reference:12]。

六、总结

国密SSL证书 是基于SM2/SM3/SM4算法的双证书体系,适用于对国产化加密有强制要求的场景。

部署关键 是使用国密版OpenSSL(GmSSL)编译Nginx,并正确配置双证书。

兼容性 可通过“国际证书+国密证书”双部署方案解决,确保普通浏览器与国密浏览器均可访问。

性能与合规 需结合硬件加速与国产化服务器环境,以满足监管要求。

建议在实际部署前,先在测试环境完成全套流程验证,确保证书、服务器配置、客户端兼容性均符合预期。