国密SSL证书如何部署?
国密SSL证书部署与普通SSL证书最大的区别,在于它采用我国商用密码算法体系,通常基于SM2、SM3、SM4算法,需要服务器、中间件以及客户端环境同时支持国密协议。
普通SSL证书一般只需要配置:
- 服务器证书;
- 私钥文件;
- 中间证书链。
而国密SSL证书通常采用:
- 签名证书(Sign Certificate)
- 加密证书(Encrypt Certificate)
双证书结构。
因此,在部署国密SSL证书前,需要确认:
- Web服务器是否支持国密算法;
- 是否安装国密版密码组件;
- 用户访问环境是否支持SM2 HTTPS;
- 是否需要同时部署RSA证书。
对于大多数需要兼顾公网访问和国密要求的企业,通常采用:SM2国密SSL证书 + RSA SSL证书双证书方案。
一、国密SSL证书和普通SSL证书部署有什么区别?
普通SSL证书:
浏览器
↓
HTTPS请求
↓
RSA/ECC证书
↓
TLS加密通信
国密SSL证书:
国密浏览器
↓
SM2签名证书
↓
SM2加密证书
↓
SM3摘要
↓
SM4通信加密
主要区别:
| 项目 | 普通SSL证书 | 国密SSL证书 |
|---|---|---|
| 算法 | RSA/ECC | SM2/SM3/SM4 |
| 证书数量 | 通常一张 | 通常两张 |
| 服务器要求 | 普通Web服务器即可 | 需要国密支持环境 |
| 浏览器 | 主流浏览器支持 | 需要国密浏览器 |
| 应用场景 | 互联网网站 | 政务、金融、信创系统 |
二、申请国密SSL证书需要哪些文件?
以常见SM2双证书结构为例,CA签发后通常会提供:
1. 签名证书
例如:SS_sign.crt, SS_sign.key
作用:
- 网站身份认证;
- 数字签名验证。
2. 加密证书
例如:SE_enc.crt, SE_enc.key
作用:
- 密钥交换;
- HTTPS通信加密。
与RSA SSL证书不同,国密SSL证书需要同时配置签名和加密证书。
三、Nginx部署国密SSL证书
1. 确认Nginx是否支持国密
普通Nginx默认使用国际OpenSSL环境,通常无法直接支持完整国密TLS协议。
部署前需要确认:
- 是否使用国密版Nginx;
- 是否集成GmSSL;
- 是否使用支持国密的商业密码组件。
常见方案:
- 国密版OpenSSL;
- GmSSL;
- 国产密码服务平台;
- 支持国密的负载均衡设备。
2. 上传国密证书文件
例如:
/etc/nginx/certs/sm2/
├── SS_sign.crt
├── SS_sign.key
├── SE_enc.crt
└── SE_enc.key
注意:私钥文件必须严格控制权限,避免泄露。
建议:chmod 600 *.key
3. 配置国密Nginx
不同国密Nginx版本配置方式可能不同。
示例:
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate
/etc/nginx/certs/sm2/SS_sign.crt;
ssl_certificate_key
/etc/nginx/certs/sm2/SS_sign.key;
ssl_certificate_enc
/etc/nginx/certs/sm2/SE_enc.crt;
ssl_certificate_key_enc
/etc/nginx/certs/sm2/SE_enc.key;
}
注意:
以上配置仅适用于支持国密扩展指令的Nginx版本。
普通Nginx直接添加上述参数会出现:
- unknown directive;
- nginx启动失败;
- SSL模块不识别。
4. 检查并重启Nginx
配置完成后:
nginx -t
确认无误:
nginx -s reload
如果启动失败,需要检查:
- OpenSSL版本;
- Nginx编译参数;
- SSL模块;
- 证书格式。
四、为什么很多企业采用SM2+RSA双证书?
虽然国密SSL证书满足国产密码要求,但公网环境存在兼容性问题。
例如:
- 普通Chrome用户访问;
- 海外用户访问;
- 微信小程序调用接口;
- 第三方系统API调用。
这些场景通常依赖国际浏览器信任体系。
因此企业常采用:
RSA证书
负责:普通用户访问;公网业务;国际兼容。
SM2证书
负责:国密浏览器;国产化终端;合规场景。
形成:
用户访问
↓
服务器判断客户端能力
↓
国密环境 → SM2证书
普通环境 → RSA证书
五、国密SSL证书部署常见问题
1. 安装后普通浏览器打不开?
原因:
普通浏览器可能不支持SM2证书体系。
解决:
部署RSA SSL证书作为兼容方案。
2. 微信小程序无法调用HTTPS接口?
原因:
部分移动端环境依赖国际SSL信任体系。
解决:
为公网接口配置RSA SSL证书。
3. Nginx提示unknown directive?
例如:
unknown directive "ssl_certificate_enc"
原因:
当前Nginx不是国密版本。
解决:
- 更换支持国密的Nginx;
- 使用国密网关;
- 使用支持SM2的负载均衡设备。
4. 国密证书为什么比普通SSL部署复杂?
因为国密HTTPS不仅涉及证书,还涉及:
- 密码算法;
- TLS协议;
- 服务端组件;
- 客户端支持环境。
因此部署前建议进行兼容性测试。
六、哪些企业需要部署国密SSL证书?
推荐场景:
政务系统
需要满足:国产密码应用要求;信息安全合规要求。
金融系统
包括:银行;证券;保险;支付平台。
国企和大型企业
用于:信创改造;内部系统安全升级;重要业务平台。
普通企业网站
如果只是:企业官网;展示网站;普通商城;
通常RSA SSL证书即可满足HTTPS需求。
七、国密SSL证书部署建议
在正式上线前,建议按照以下流程:
第一步:确认业务需求
判断:
- 是否有等保要求;
- 是否需要密码测评;
- 是否必须使用SM2。
第二步:评估服务器环境
确认:
- Nginx/Apache版本;
- 是否支持国密;
- 是否需要密码设备。
第三步:测试访问兼容性
分别测试:
- 国密浏览器;
- 普通浏览器;
- 移动端;
- API调用。
第四步:选择合适方案
| 业务需求 | 推荐方案 |
|---|---|
| 普通网站 | RSA SSL证书 |
| 国密要求系统 | SM2 SSL证书 |
| 公网+国密兼容 | SM2+RSA双证书 |



京公网安备11010502031690号
网站经营企业工商营业执照
















