Administrator
Published on 2025-09-11 / 0 Visits
0

国密证书必须要 签名证书,签名私钥 以及 加密证书和加密私钥吗

#AI

国密证书是否需要同时包含“签名证书+签名私钥”和“加密证书+加密私钥”,取决于具体的使用场景、行业规范以及所采用的国密协议版本。两者的用途不同,并非所有场景都要求同时配置。

一、签名证书与加密证书的核心区别

国密体系中,“签名”和“加密”是两种不同的密码学用途,对应两套独立的密钥对和证书:

类型用途核心算法典型场景
签名证书用于身份认证(证明“我是我”)SM2 签名算法(SM2withSM3)服务器身份验证、数字签名
加密证书用于密钥交换(加密传输对称密钥)SM2 加密算法客户端向服务器传输加密数据

二、是否必须同时配置?分场景判断

1. 基础场景:仅需签名证书(大多数通用场景)

在普通的 HTTPS 加密传输中(如网站、API 服务),仅需配置签名证书和签名私钥即可满足国密合规要求。

  • 原理:此时 TLS 握手过程中,服务器通过签名证书证明身份(客户端验证服务器签名),后续会话密钥的协商可通过 SM2 密钥交换算法完成(无需单独的加密证书)。
  • 适用场景:非金融、非政务等对安全性要求不极致的通用场景,主流国密补丁(如 Tengine 国密版)默认支持这种模式。

2. 高安全场景:必须同时配置双证书(部分行业强制)

在金融、政务、能源等关键行业(需满足《密码应用安全性评估》一级及以上要求),通常强制要求“签名+加密”双证书

  • 原理:签名证书仅用于身份认证,加密证书专门用于密钥交换,实现“签名密钥”与“加密密钥”的分离管理,降低密钥泄露风险。
  • 依据:部分行业规范(如《金融领域密码应用技术规范》)明确要求“签名与加密密钥对分离”,此时必须同时部署两套证书。

三、双证书的配置要求(若需同时使用)

若场景要求双证书,需注意以下几点:

  1. 两套证书需独立生成:签名证书和加密证书是两个不同的证书,对应不同的 SM2 密钥对(不可共用同一密钥对)。
  2. 均需合规 CA 签发:两套证书都必须由国密局认可的 CA 机构签发,且证书扩展字段需明确标识用途(签名证书标注“数字签名”,加密证书标注“密钥加密”)。
  3. Nginx 配置需区分:国密补丁需支持双证书模式,配置时需分别指定签名证书、签名私钥、加密证书、加密私钥,例如:
    # 国密双证书配置示例(Tengine 国密版)
    server {
        listen 443 ssl;
        server_name example.com;
        
        # 签名证书及私钥(用于身份认证)
        ssl_certificate sm2_sign.crt;
        ssl_certificate_key sm2_sign.key;
        
        # 加密证书及私钥(用于密钥交换)
        ssl_enc_certificate sm2_enc.crt;
        ssl_enc_certificate_key sm2_enc.key;
        
        # 启用国密套件
        ssl_ciphers ECDHE-SM4-GCM-SM3;
        ssl_protocols TLSv1.2 TLSv1.3;
    }
    

总结

  • 非强制场景(如普通网站):仅需“签名证书+签名私钥”即可满足国密合规。
  • 强制场景(如金融、政务):必须同时配置“签名证书+签名私钥”和“加密证书+加密私钥”,实现密钥分离。

具体需参考所在行业的密码应用标准,或通过“密码应用安全性评估”确定是否需要双证书。