在国密Nginx配置中,`ssl_enc_certificate`关键字专门用于指定国密“双证书”体系中的“加密证书”。它的核心适用场景是部署国密标准SSL/TLS服务,特别是为了满足金融、政务等高合规性要求而必须采用国密算法和双证书机制的环境。

一、核心适用场景:国密双证书部署

国密标准与常见的国际标准(如RSA)的一个关键区别在于,它要求使用“双证书”体系:

      签名证书:用于身份认证和数字签名,证明服务器的真实身份。

      加密证书:专门用于密钥交换和加密通信内容。

这种设计遵循了“签名密钥不用于加密”的安全原则,以降低密钥泄露的风险并便于密钥管理。

因此,`ssl_enc_certificate`的适用场景非常明确:

1.    强制合规性部署:这是最主要的场景。当企业或机构的Web服务(如政务、金融、央企网站)**必须遵循国家密码管理局的合规要求**时,就需要部署国密双证书。

2.    需要高安全性的内部系统:对于处理敏感数据的内部业务系统,采用国密双证书可以提供符合国家标准的、更高的安全保障。

3.    构建全链路国密生态:在与国密浏览器(如密信、红莲花、360国密版)配合时,服务器端必须正确配置双证书才能完成安全的国密SSL握手。

二、标准配置示例

在支持国密的Nginx配置中,`ssl_enc_certificate`和`ssl_enc_certificate_key`会与签名证书的指令成对出现,示例如下:

nginx

server  {

        listen  443  ssl;

        server_name  your-domain.com;

          签名证书和私钥

        ssl_certificate  /path/to/your_sign_cert.crt;

        ssl_certificate_key  /path/to/your_sign_key.key;

          加密证书和私钥  (关键部分)

        ssl_enc_certificate  /path/to/your_enc_cert.crt;

        ssl_enc_certificate_key  /path/to/your_enc_key.key;

        ...  其他SSL配置

}

三、重要注意事项

      证书用途必须匹配:签名证书的用途必须包含数字签名,加密证书的用途必须包含数据加密。如果弄反或缺失,会导致SSL握手失败。

      需要专用的Nginx版本:官方Nginx不支持这些国密指令。你需要使用集成了国密算法库(如Tongsuo、GmSSL或TASSL)的“国密版Nginx”。

      注意双证书与单证书的区别:常规的`ssl_certificate`和`ssl_certificate_key`指令组合不能直接用于加载国密证书。如果你的需求只是部署国际标准(如RSA)证书,则无需使用`ssl_enc_certificate`。