使用 acme.sh 申请 ECC 证书并设置 Nginx 使其使用双证书

前情

曾经在 这里 讲述了如何用 acme.sh 申请 RSA 证书

这里我们还是使用 DNS 验证的方法 所以先要导入之前申请的 ID 和 Token 具体的请看 acme.sh 的 wiki

1
2
export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"

申请并安装 ECC 证书

跟以前一样 先申请 后安装

1
2
3
4
#申请 ECC 256 位 证书(跟 384 位证书 二选一)
acme.sh --issue --dns {dns_short_name} -d example.com -d www.example.com --keylength ec-256
#申请 ECC 384 位 证书(跟 256 位证书 二选一)
acme.sh --issue --dns {dns_short_name} -d example.com -d www.example.com --keylength ec-384

注意--ecc这个参数

1
2
3
4
acme.sh --install-cert -d example.com --ecc \
--key-file /path/to/keyfile/in/nginx/key.pem \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd "service nginx force-reload"

设置 Nginx 使其使用双证书

把 RSA 与 ECC 证书的位置都设置好

1
2
3
4
5
ssl_certificate     /path/to/fullchain/nginx/rsa.cert.pem;
ssl_certificate_key /path/to/keyfile/in/nginx/rsa.key.pem;

ssl_certificate /path/to/keyfile/in/nginx/ecc.cert.pem;
ssl_certificate_key /path/to/keyfile/in/nginx/ecc.key.pem;

然后修改ssl_cipers使其优先使用 ECC 证书

此处要配合我的 上一篇 食用 因为这里我启用了 TLS v1.3

1
2
3
4
ssl_protocols TLSv1.2 TLSv1.3;
#ssl_prefer_server_ciphers 意思是由服务器提供加密套件的顺序
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE+3DES:RSA+3DES;

设置好后就可以用nginx -t测试一下 若成功 会输出以下

1
2
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

成功了就可以重启 Nginx 了

1
systemctl restart nginx

使用浏览器测试是否开启成功

依然用 Firefox 来测试

地址栏旁的绿色锁->显示连接细节->更多信息->查看证书->详细信息->看图

Zjfjwq.webp

相关链接

CentOS 7 编译安装 nginx 并启用 TLS1.3