2026-08-31
国密SM2体系提出双证书双密钥机制,将签名业务与加密业务做物理逻辑分离,分为签名证书(签名密钥对)、加密证书(加密密钥对),成为国密SSL/TLS协议的核心技术特征。很多运维人员在部署国密SSL证书时,仅知道需要上传两张证书,却不理解两套证书的分工、握手流程、协同逻辑,容易出现握手失败、浏览器国密兼容异常、密钥混用等故障。本文从密钥用途、证书定位、握手交互、协同流程、部署误区多个维度拆解国密双证书运行原理。
通用RSA证书,同一组公私钥同时完成两件工作:
签名:服务器对握手消息做签名,证明自身身份,保障数据完整性;
密钥加密:加密预主密钥,实现会话密钥协商,保障传输数据保密性。
风险点:如果私钥泄露,攻击者既可以伪造服务器签名冒充业务系统,又可以解密历史抓取的加密流量,身份认证和数据加密防线同时被攻破。
国密GM/T 0024?2014《SSL VPN技术规范》明确要求,SM2算法必须使用两套独立密钥对,实现职责分离,由此诞生签名证书、加密证书。
签名证书对应的SM2签名密钥对,只负责数字签名与验签,不做数据加密。
私钥用途:TLS握手中服务器身份签名、握手消息完整性签名;
公钥用途:客户端完成验签,确认服务器身份合法性,校验握手数据没有被篡改;
安全特性:签名私钥不需要解密外部传入数据,主要用于对外输出签名结果。即便签名私钥泄露,攻击者可以伪造签名冒充服务,但无法解密过往加密通信流量。
> 证书扩展密钥用法:数字签名、不可否认。
加密证书对应的SM2加密密钥对,只负责密钥封装/解密,不参与数字签名。
私钥用途:解密客户端发送过来的会话密钥封装数据,提取预主密钥;
公钥用途:客户端使用加密证书公钥,对生成的随机密钥材料进行SM2密钥封装;
安全特性:加密私钥掌握解密能力,如果泄露,历史通信可被解密,但不能伪造服务器身份签名。
> 证书扩展密钥用法:密钥加密、数据加密。
签名证书与加密证书是两套独立密钥对生成两张独立证书,但二者存在绑定关联:加密证书的申请,必须使用签名证书私钥进行签名,证明该加密证书归属于同一实体。CA签发时会在加密证书内部携带签名证书的公钥标识,保证两张证书属于同一个业务主体,防止攻击者伪造加密证书与合法签名证书配对。
> 重点:两张证书序列号不同、密钥对完全独立,不能互相替换使用。
国密TLS(GMSSL)握手流程和标准TLS有明显区别,双证书协同主要集中在服务器证书下发、密钥封装、签名校验环节。
客户端发送GM?Client?Hello,携带支持的国密密码套件、随机数、会话ID等信息,发起国密握手请求。
服务端选定国密密码套件,返回Server?Hello消息,紧接着同时下发签名证书、加密证书两张证书链给到客户端。客户端会分别解析两张证书,校验证书链签名有效性、有效期、主体信息,确认两张证书属于同一实体。
客户端本地生成预主密钥,使用服务器加密证书的公钥执行SM2密钥封装算法,将封装后的密文发送给服务器。
> 此处绝对不能使用签名证书公钥做加密,签名密钥不设计用于加密运算,强行使用会出现协议报错。
服务器使用加密证书对应的私钥解密,取出预主密钥。结合客户端随机数、服务端随机数,通过国密SM3密钥派生算法,计算出会话工作密钥(SM4加密密钥)。
服务器使用签名证书私钥,对握手全部关键消息做SM2数字签名,将签名结果发送客户端。客户端拿签名证书公钥完成验签。
这一步用来证明:当前服务器确实持有合法签名私钥,握手过程消息没有中间人篡改。
双方协商出SM4会话密钥,后续业务流量全部使用SM4?CBC/GCM完成加密传输。
整个握手流程清晰实现职责拆分:加密证书管密钥解密,签名证书管身份与完整性校验,两套密钥各司其职,共同完成一次国密HTTPS会话建立。
两套密钥独立,某一套私钥泄露不会造成全部安全体系崩塌。
若签名私钥泄露:攻击者可伪造身份,但无法解密存量加密流量;更换签名证书即可恢复,历史通信数据依然安全。
若加密私钥泄露:可以解密捕获的流量,但无法伪造服务器身份欺骗客户端;更新加密证书即可,身份认证链路不受影响。
对比RSA单证书:一旦私钥泄露,冒充身份+解密历史流量同时实现,安全损失更大。
密码法要求重要系统实现密码运算职责分离。签名私钥、加密私钥可以部署在不同密码硬件设备(密码机、加密机)。例如签名私钥部署一台密码机,加密私钥部署另一台,实现权限、运维人员隔离,满足等保、密评核查要求。
SM2算法在密码规范中,算法参数针对签名、加密做两套接口定义,不建议同一密钥既签名又加密。双证书机制从证书层面强制分开密钥用途,规避算法层面的安全缺陷。
现象:配置文件把签名私钥绑定加密证书,或者加密私钥绑定签名证书。
表现:国密握手失败,报密钥算法错误,国密浏览器无法访问。
根因:签名私钥只能做签名,不能解密密钥封装数据;加密私钥不能生成合法握手签名。两套私钥和证书必须一一对应。
部分运维直接上传一张国密证书,省略另外一张。
现象:普通浏览器直接无法建立GMSSL会话,国密专用客户端握手中断。
根因:GM/T0024协议强制国密密码套件下需要双证书,缺少任意一张,客户端解析证书列表失败。
部分测试环境自行生成两张证书,没有做绑定签名,两张证书主体名称相同,但CA绑定关系缺失。
现象:部分国密客户端校验证书绑定关系失败,握手终止。
> 生产环境必须使用正规CA签发配对好的签名+加密证书,不建议自制两张独立证书强行配对。
签名证书没有配置数字签名;加密证书没有配置密钥加密。
现象:密评工具扫描告警,部分严格国密客户端拒绝证书。
现实业务大量采用国密+RSA双栈部署。服务器同时具备RSA证书、国密签名证书、国密加密证书。
普通浏览器:走标准TLS,选用RSA证书完成握手;
国密改造客户端、国密浏览器:协商GMSSL国密套件,加载签名+加密双证书完成会话。
两套体系互相独立,RSA证书和国密双证书之间不存在密钥绑定,只是服务端同时提供两套证书链适配不同客户端。很多人混淆概念,把RSA证书当成国密双证书其中一张,这是典型部署误区。
1. 证书申请阶段:向国密CA一次性申请配对完成的签名证书、加密证书,不要分开申请两张独立证书,保证加密证书携带签名证书绑定信息。
2. 硬件优先:生产环境签名私钥、加密私钥存储在国密密码机,禁止明文导出私钥文件;测试环境才使用文件形式私钥。
3. 配置核对:部署时核对:签名证书 ? 签名私钥;加密证书 ? 加密私钥,核对证书扩展密钥用法字段。
4. 证书更新:两张证书有效期可以保持一致,到期同时替换签名、加密整套证书,不要只更新其中一张。
5. 业务验证:使用国密浏览器、gmssl命令行工具分别测试握手,确认国密套件正常协商,同时做密评工具合规扫描。
国密SSL证书的双证书机制并不是简单“多上传一张证书”,而是基于密码安全职责分离设计的一套完整协同体系。签名证书负责身份认证与完整性保护,加密证书负责会话密钥的封装解密,两套密钥各司其职,将身份伪造风险与流量解密风险进行隔离,满足密码法、等保、密评的合规要求。