飘易博客(作者:Flymorn)
订阅《飘易博客》RSS,第一时间查看最新文章!
飘易首页 | 留言本 | 关于我 | 订阅Feed

记一次HTTPS/SSL证书的Cipher调整

Author:飘易 Source:飘易
Category:网络技术 PostTime:2026/3/9 20:56:54
正 文:

某网站已经部署了HTTPS的ssl证书,但是需要对Cipher协议进行调整。

先通过chrome浏览器 - ctrl+shift+J - privacy and security 查看SSL证书连接详情,比如:

Connection:

ProtocolTLS 1.3
Key exchangeX25519
Server signatureRSA-PSS with SHA-256
CipherAES_256_GCM

Certificate

Subjecthkds.x360.net
SAN

hkds.x360.net                

Valid fromFri, 20 Feb 2026 00:00:00 GMT
Valid untilThu, 21 May 2026 23:59:59 GMT
IssuerZeroSSL RSA Domain Secure Site CA

系统是CentOS 7.9,查看nginx版本nginx -V,返回:

nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.1.1g  21 Apr 2020
TLS SNI support enabled

openssl版本:

openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

因为指定 cipher 协议,TLSv1.3 控制命令是 ssl_conf_command,而ssl_conf_command需要nginx版本高于1.19.4,需先升级nginx。


Nginx升级脚本

执行:./upgrade.sh nginx 按提示输入版本号后回车(访问 http://nginx.org/en/download.html 可查找nginx的最新版本号和以往旧版本号 ),再次回车确认即可开始升级Nginx。Nginx升级为平滑升级,升级过程不影响nginx的运行。

./upgrade.sh nginx

https://nginx.org/en/download.html 查看选择nginx-1.24.0  (选择高于 1.18.0 最近的一个版本,防止版本跨度过大!)


升级好:

nginx -V
nginx version: nginx/1.24.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.1.1g  21 Apr 2020
TLS SNI support enabled


因为服务器上有多个vhost解析,我们需要调整默认的server块,加上 default_server,防止HTTPS和客户端握手时采取其他的server块配置:

server
    {
        # 加上 default_server,确保它是 443 端口的基准 
        listen 443 ssl http2 default_server;
        ...
    }


需要将 cipher 从 AES_256_GCM 调为 AES_128_GCM,server块增加:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
# TLSv1.3 控制命令 ssl_conf_command
ssl_conf_command Ciphersuites TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256;
# 针对 TLS 1.2 的套件顺序(也建议将 128 放在前面以适配你的代理环境)
ssl_ciphers "TLS_AES_128_GCM_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:!MD5:!aNULL";

重启nginx,或者重新加载reload均可。


使用 Curl 命令(快速测试)

如果你的本地电脑(或另一台 Linux 服务器)的 curl 版本较新(7.52.0+),可以直接通过命令行查看:

curl -I -v --tlsv1.3 https://x360.net 2>&1 | grep "SSL connection using"

输出示例:SSL connection using TLS_AES_128_GCM_SHA256。

如果输出包含 TLS_AES_128_GCM_SHA256,说明生效;如果依然是 TLS_AES_256_GCM_SHA384,则说明优先级未调换成功。


此时再查看:

Connection

ProtocolTLS 1.3
Key exchangeX25519
Server signatureECDSA with SHA-256
CipherAES_128_GCM


如果需要调整issuer为ECC格式:

强制签发 ECC 证书

执行以下命令(请根据你的实际路径调整 acme.sh 的位置):

# 强制指定密钥长度为 ec-256
/usr/local/acme.sh/acme.sh --issue -d x360.net --keylength ec-256 --webroot /home/wwwroot/x360.net/public

返回:

[Sat Mar  7 19:39:04 CST 2026] Using CA: https://acme.zerossl.com/v2/DV90
[Sat Mar  7 19:39:04 CST 2026] Creating domain key
[Sat Mar  7 19:39:04 CST 2026] The domain key is here: /usr/local/nginx/conf/ssl/x360.net_ecc/xi360.net.key
[Sat Mar  7 19:39:04 CST 2026] Single domain='x360.net'
[Sat Mar  7 19:39:15 CST 2026] Getting webroot for domain='x360.net'
[Sat Mar  7 19:39:15 CST 2026] Verifying: x360.net
[Sat Mar  7 19:39:21 CST 2026] Processing. The CA is processing your order, please wait. (1/30)
[Sat Mar  7 19:39:27 CST 2026] Success
[Sat Mar  7 19:39:27 CST 2026] Verification finished, beginning signing.
[Sat Mar  7 19:39:27 CST 2026] Let's finalize the order.
[Sat Mar  7 19:39:27 CST 2026] Le_OrderFinalize='https://acme.zerossl.com/v2/DV90/order/aw8MkOLms8P9/finalize'
[Sat Mar  7 19:39:31 CST 2026] Order status is 'processing', let's sleep and retry.
[Sat Mar  7 19:39:31 CST 2026] Sleeping for 15 seconds then retrying
[Sat Mar  7 19:39:47 CST 2026] Polling order status: https://acme.zerossl.com/v2/DV90/order/aw8MkOLms8P
[Sat Mar  7 19:39:48 CST 2026] Downloading cert.
[Sat Mar  7 19:39:48 CST 2026] Le_LinkCert='https://acme.zerossl.com/v2/DV90/cert/FNQ1xYugNE'
[Sat Mar  7 19:39:52 CST 2026] Cert success.
[Sat Mar  7 19:39:52 CST 2026] Your cert is in: /usr/local/nginx/conf/ssl/x360.net_ecc/x360.net.cer
[Sat Mar  7 19:39:52 CST 2026] Your cert key is in: /usr/local/nginx/conf/ssl/x360.net_ecc/x360.net.key
[Sat Mar  7 19:39:52 CST 2026] The intermediate CA cert is in: /usr/local/nginx/conf/ssl/x360.net_ecc/ca.cer
[Sat Mar  7 19:39:52 CST 2026] And the full-chain cert is in: /usr/local/nginx/conf/ssl/x360.net_ecc/fullchain.cer


注意,ECC证书生成的目录是类似 x360.net_ecc 格式,可以删除 _ecc ,然后同步调整vhost里证书目录即可:

ssl_certificate /usr/local/nginx/conf/ssl/x360.net/fullchain.cer;
ssl_certificate_key /usr/local/nginx/conf/ssl/x360.net/x360.net.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
# TLSv1.3 控制命令 ssl_conf_command
ssl_conf_command Ciphersuites TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256;
# 针对 TLS 1.2 的套件顺序(也建议将 128 放在前面以适配你的代理环境)
ssl_ciphers "TLS_AES_128_GCM_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:!MD5:!aNULL";
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;


附注:

ZeroSSL ECC Domain Secure Site CA 和 ZeroSSL RSA Domain Secure Site CA 区别

  1. 技术规格与性能

特性            ZeroSSL RSA CA            ZeroSSL ECC CA            
全称            Rivest-Shamir-Adleman            Elliptic Curve Cryptography            
密钥长度            通常为 2048 位或 4096 位            通常为 256 位或 384 位            
计算效率            较低(加密/解密速度较慢)            极高(更快的握手速度)            
资源消耗            较高(占用更多 CPU 和内存)            极低(对移动设备更友好)            
带宽占用            证书文件较大            证书文件更小            


2. 安全强度对比

虽然 ECC 的密钥长度比 RSA 短得多,但其安全强度反而更高。

  • 256 位的 ECC 密钥提供的安全性相当于 3072 位的 RSA 密钥

  • 随着计算能力的提升,RSA 需要不断增加位数(如从 2048 增加到 4096)来维持安全性,而 ECC 只需微调即可达到极高的抗攻击能力。

3. 兼容性(关键区别)

这是选择时最需要权衡的一点:

  • RSA (Domain Secure Site CA): 具有近乎完美的兼容性。无论是十年前的老旧浏览器、早期的安卓系统,还是各种 IoT 设备,几乎都支持 RSA。

  • ECC (Domain Secure Site CA): 虽然现代浏览器(Chrome, Edge, Safari, Firefox)和操作系统(iOS, Android)都已经全面支持,但在一些极老旧的平台(如 Windows XP 上的 IE、部分非常老的 Java 客户端)上可能会出现握手失败。

4. 应该如何选择?

选择 ECC 的场景:

  • 追求极致性能: 如果你的网站流量很大,ECC 能显著降低服务器在高并发下的 CPU 负载,并加快首屏加载速度(TTFB)。

  • 移动端优先: 适合 App、小程序后端,因为小密钥对移动设备的电池和性能损耗更小。

选择 RSA 的场景:

  • 追求最大兼容: 如果你的用户群可能使用老旧系统,或者你需要确保在所有复杂的网络环境下(包括一些老旧的防火墙或网关)都能正常访问。

  • 默认推荐: 如果你无法确定用户的设备环境,RSA 是最保险的“万金油”选择。


总结:ECC 是未来,它更小、更快、更安全;而 RSA 是现状,它胜在稳定和无处不在的兼容性。目前大多数高性能站点(如 Cloudflare、Google)会优先尝试使用 ECC 证书。


作者:飘易
来源:飘易
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
上一篇:合伙企业如何自己做好零申报?不要遗漏税种!
下一篇:跨境电商双层网络架构静态ISP的IP配置问题
0条评论 “记一次HTTPS/SSL证书的Cipher调整”
No Comment .
发表评论
名称(*必填)
邮件(选填)
网站(选填)

记住我,下次回复时不用重新输入个人信息
目 录
飘易搜索
最新文章
相关文章
随机文章
© 2007-2030 飘易博客 Www.Piaoyi.Org 版权所有 Sitemap