如何为Nginx服务器生成ECC CSR并申请带CanSignHttpExchanges扩展的TLS证书?
为Nginx生成带CanSignHttpExchanges扩展的ECC CSR(用于Signed HTTP Exchanges)
步骤1:生成ECC私钥
使用OpenSSL生成符合规范的椭圆曲线(推荐prime256v1,主流CA均支持)私钥:
openssl ecparam -genkey -name prime256v1 -out your-domain-ecc.key
注意:私钥文件需妥善保管,避免泄露。
步骤2:创建CSR扩展配置文件
新建csr-extensions.conf文件,填入以下内容并替换括号内的实际信息:
[req] distinguished_name = req_distinguished_name req_extensions = v3_req prompt = no [req_distinguished_name] C = CN # 国家代码(如CN代表中国) ST = Beijing # 省份/州 L = Beijing # 城市 O = Your Org Name # 组织名称 OU = Your Dept Name # 部门名称 CN = example.com # 与证书申请一致的域名 [v3_req] keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = serverAuth 1.3.6.1.4.1.11129.2.1.22 = ASN1:BOOLEAN:TRUE # CanSignHttpExchanges扩展的标准OID
核心是最后一行的扩展配置,确保OID和布尔值正确,这是Signed HTTP Exchanges要求的关键标识。
步骤3:生成带扩展的ECC CSR
执行命令,基于私钥和配置文件生成符合要求的CSR:
openssl req -new -key your-domain-ecc.key -out your-domain-ecc.csr -config csr-extensions.conf
步骤4:验证CSR的扩展正确性
生成后,通过以下命令检查CSR是否包含目标扩展:
openssl req -in your-domain-ecc.csr -noout -text
在输出的X509v3 extensions段落中,应能看到:
X509v3 extensions: ... 1.3.6.1.4.1.11129.2.1.22: TRUE
后续Nginx证书配置(证书到手后)
拿到DigiCert颁发的带扩展的ECC证书后,在Nginx中配置SSL:
server { listen 443 ssl http2; server_name example.com; # 指定ECC证书与私钥路径 ssl_certificate /path/to/your-domain-ecc.crt; ssl_certificate_key /path/to/your-domain-ecc.key; # 适配ECC的SSL优化配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers on; }
内容的提问来源于stack exchange,提问作者MD. Zeaul Hoque Shuvo
相关产品推荐
相关产品推荐

