在国密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`。