国密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,并正确配置双证书。
兼容性 可通过“国际证书+国密证书”双部署方案解决,确保普通浏览器与国密浏览器均可访问。
性能与合规 需结合硬件加速与国产化服务器环境,以满足监管要求。
建议在实际部署前,先在测试环境完成全套流程验证,确保证书、服务器配置、客户端兼容性均符合预期。