首页/新闻资讯/正文详情

Nginx换证书后部分客户端仍显示旧证书:RSA与ECDSA双证书排查

发布时间:2026/9/24 15:09:37 来源:云帆数科 栏目:资讯中心
Nginx换证书后部分客户端仍显示旧证书:RSA与ECDSA双证书排查
同一个域名证书明明换了有的客户端看到新证书有的却还拿到旧证书。先别清缓存Nginx 同时配置 RSA 和 ECDSA 证书却只更新一组就可能出现这种分裂。本文固定地址、端口和 SNI用两次不同认证类型的握手检查是不是漏换了另一张。一、一次握手不是整站证书盘点一个站点不一定只有一张服务端证书。Nginx 可以同时加载 RSA、ECDSA 证书再根据客户端能力和服务端配置选择合适的一组。普通客户端可能同时支持两者并不存在永远固定的“RSA 浏览器”和“ECDSA 浏览器”。因此一次 openssl s_client 成功只能说明这次握手拿到的证书如何。-showcerts 展示的是该次服务端发送的证书列表不会把服务器上所有备选证书都翻出来。就像检查了一扇门不能顺手给整栋楼盖验收章。二、先找同一 server 中的两组配置Nginx 官方文档说明从 1.11.0 起ssl_certificate 可以重复出现用于加载不同类型的证书。下面是配置片段路径需要替换成自己的文件不是可直接覆盖生产的完整配置。server { listen 443 ssl; server_name dual.example.test; ssl_certificate /etc/nginx/tls/rsa-fullchain.pem; ssl_certificate_key /etc/nginx/tls/rsa.key; ssl_certificate /etc/nginx/tls/ec-fullchain.pem; ssl_certificate_key /etc/nginx/tls/ec.key; }先确认两组证书与各自私钥配对fullchain 中叶证书在前、中间证书在后再检查 SAN 是否都覆盖访问名。官方提到的 OpenSSL 1.0.2 及以上要求在这段文档中指的是不同证书使用各自独立证书链别简化成一句含糊的“双证书最低版本”。本机查看生效配置时留意 include 和符号链接不要把完整配置或私钥贴进工单。三、固定终点再分别探测 RSA 与 ECDSA两次探针固定同一地址、端口和 SNI避免负载均衡、IPv4/IPv6 干扰判断。Bash 模板中的文档地址、域名和 CA 文件需要替换。私有站点用受控 CA 包公网用合适的系统 CA 包不能随手信任未知证书。IP192.0.2.10 NAMEdual.example.test CAFILE/path/to/trusted-ca.pem for ALG in RSA ECDSA; do openssl s_client -connect ${IP}:443 \ -servername $NAME -tls1_2 \ -cipher ECDHE-${ALG}-AES128-GCM-SHA256 \ -CAfile $CAFILE -no-CApath \ -verify_hostname $NAME -verify_return_error \ -showcerts -no_ticket /dev/null \ ${ALG}.txt 21 RC$? printf %s 握手退出码%s\n $ALG $RC done这里限定 TLS 1.2是为了利用两个套件明确区分 RSA 与 ECDSA 认证。两个名字中的 ECDHE 都是临时密钥交换后面的 RSA/ECDSA 才是此处关注的认证区别不能看到 ECDHE 就认定用了 EC 证书。-servername 发送 SNI-verify_hostname 校验访问名两者不是同义词。-verify_return_error 要求遇到验证错误就中断否则诊断工具可能继续握手让人误以为验证成功。四、比较公钥类型和完整指纹先查退出码、协议、套件和主机名验证再将成功握手中的第一段完整 PEM 证书分别存为 rsa-leaf.pem、ec-leaf.pem不要把整个日志当证书。for F in rsa-leaf.pem ec-leaf.pem; do openssl x509 -in $F -noout \ -sha256 -fingerprint -serial -dates -ext subjectAltName openssl x509 -in $F -noout -text done重点看 Subject Public Key Info 下的 Public Key Algorithm以及 SHA-256 指纹。证书的 Signature Algorithm 是签发者对证书的签名算法不等于叶证书公钥类型RSA CA 签出的证书叶子公钥仍可以是 EC。不同证书可能有效期相同别只截图日期线上指纹要与预期新证书逐张对应。五、隔离实验只换 RSA 会发生什么为避免把猜测写成结论我用临时 CA、同一 SAN 和四张仍有效的测试证书做了回环实验。Nginx 为 1.26.3构建信息报告 OpenSSL 1.1.1w命令行是 OpenSSL 1.1.1k FIPS。两者版本分开记录不能拿 CLI 版本替服务端作证。每个阶段都停止并重新启动独立测试实例再分别建立两次全新握手。这样排除了旧 worker、旧内存和会话恢复的干扰不是生产 reload 实验。阶段RSA 探针ECDSA 探针初始两张旧证书RSA 旧指纹EC 旧指纹只更新 RSARSA 新指纹EC 指纹不变再更新 ECRSA 指纹不变EC 新指纹六次正例均通过 CA、主机名、套件和指纹检查错误主机名负例被拒绝。这里的“旧”只是未替换并没有过期。实验结束已关闭独立监听、清理临时私钥没有改系统信任库、时钟或生产服务。六、握手失败别立刻判断证书缺失如果一个探针成功另一个握手失败先看服务端是否允许 TLS 1.2 和指定套件。只支持 TLS 1.3、禁用了该套件或者签名算法约束不兼容都可能失败不能单凭结果认定没配置 EC 证书。不要为跑通命令修改生产安全策略现有策略不允许上述 TLS 1.2 套件时按实际协议另做探针。本机负例还提醒了一个坑错误主机名时退出码已经是 1日志也有 Hostname mismatch末尾却仍出现 Verify return code: 0。不要只搜一行“0 (ok)”就宣布成功更不要用管道最后一个命令的退出码遮住握手失败。七、TLS 1.3 不照搬这套选择方法OpenSSL 官方说明-cipher 控制 TLS 1.2 及更早版本TLS 1.3 使用 -ciphersuites。TLS 1.3 套件名称不再承担 RSA/ECDSA 认证类型选择单纯更换套件名不能复刻这里的分组。TLS 1.3 需结合签名算法协商与服务端策略另查。本文未实测 TLS 1.3 或 -sigalgs不将其写成万能命令。八、修复后验收两张而不是一张确认漏更后按现有部署流程补齐对应证书和私钥保留回滚材料配置校验通过后再执行获授权的加载操作。不要直接把 RSA 文件复制到 EC 路径两种公钥类型不是换个文件名就能互相代替。同一地址、端口和 SNI 下分别记录两类探针结果。两张叶证书的 SAN、有效期、指纹与预期一致。分别验证证书链和主机名不只检查文件可解析。结合真实客户端复测多节点部署要逐节点验收。监控分别覆盖两组证书避免只盯默认协商结果。两类探针都拿到新证书再查连接复用、CDN 或节点分发。先回答这次握手选中了哪张证书官方参考Nginx ssl_certificateOpenSSL s_client 参数OpenSSL 套件定义。

相关推荐

大模型赋能储备物资动态管控:架构设计与实战指南
大模型赋能储备物资动态管控:架构设计与实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 15:09:31

EmDash 站点配置完全指南:从 astro.config.mjs 到部署、类型生成与反向代理
EmDash 站点配置完全指南:从 astro.config.mjs 到部署、类型生成与反向代理

CMS后端前端插件系统 【免费下载链接】emdash EmDash is a full-stack TypeScript CMS based on Astro; the spiritual successor to WordPress 项目地址: https://gitcode.com/gh_mirrors/emdas/emdash 点击查看 免费下载 本文以 EmDash(基于 Astro 的… · 2026/9/24 15:09:24

BlockNote 仓库开发指南:代码规范、vp 命令体系、核心入口与导出器一致性保障
BlockNote 仓库开发指南:代码规范、vp 命令体系、核心入口与导出器一致性保障

前端富文本UI组件AI 应用 【免费下载链接】BlockNote A React Rich Text Editor thats block-based (Notion style) and extensible. Built on top of Prosemirror and Tiptap. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/bl/BlockNote 点击查看 免费下载 <输出… · 2026/9/24 15:09:24

Comp AI CRM 前端样式规范:shadcn/ui 语义化 Styling  Customization 实战指南
Comp AI CRM 前端样式规范:shadcn/ui 语义化 Styling Customization 实战指南

后端前端CRM人工智能AI Agent 【免费下载链接】crm Comp AI CRM is an open source, CRM designed for AI agents. Agentic-first CRM. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/crm48/crm 点击查看 免费下载 本文以 Comp AI CRM 仓库内 .agents/skills/shadcn/r… · 2026/9/24 15:33:03

thumbor 的 strip_exif 过滤器:按需移除输出图片 EXIF 元数据
thumbor 的 strip_exif 过滤器:按需移除输出图片 EXIF 元数据

后端图像处理 【免费下载链接】thumbor thumbor is an open-source photo thumbnail service by globo.com 项目地址&#xff1a; https://gitcode.com/gh_mirrors/th/thumbor 点击查看 免费下载 导读 strip_exif 是 thumbor 内置图片过滤器之一&#xff0c;用于在图片处理管… · 2026/9/24 15:33:03

标签打印软件选型:别只看低价,正版授权的长期价值
标签打印软件选型:别只看低价,正版授权的长期价值

很多制造企业在采购Bartender、NiceLabel、Codesoft这类条码标签设计软件&#xff0c;工业标签打印软件时&#xff0c;第一反应是先找全网最低价。但实际接触下来会发现&#xff0c;市面上不少小代理给出的报价远低于官方指导价&#xff0c;背后往往藏着复用授权、共享激活码、… · 2026/9/24 15:33:03

作为程序员的我,用工程思维解决了摄影学习的最大痛点
作为程序员的我,用工程思维解决了摄影学习的最大痛点

问题定义&#xff1a;摄影学习的"黑盒困境" 作为一个写了十年代码的程序员&#xff0c;我最受不了的就是没有反馈的学习过程。写代码有编译错误提示&#xff0c;有单元测试&#xff0c;有性能分析工具&#xff0c;每一步都能看到明确的反馈。但学摄影完全不一样&… · 2026/9/24 15:32:51

nom 8.0 演进全解析:从 CHANGELOG 看 Rust 解析器组合框架的十年架构变迁
nom 8.0 演进全解析:从 CHANGELOG 看 Rust 解析器组合框架的十年架构变迁

开发工具 【免费下载链接】nom Rust parser combinator framework 项目地址&#xff1a; https://gitcode.com/gh_mirrors/no/nom 点击查看 免费下载 nom 是 Rust 生态中最具代表性的解析器组合框架&#xff08;parser combinator framework&#xff09;之一&#xff0c;本仓库… · 2026/9/24 15:32:44

Semi Design 图标(Icon)组件完全指南:图标集体系、尺寸旋转、双色多色着色与自定义方案
Semi Design 图标(Icon)组件完全指南:图标集体系、尺寸旋转、双色多色着色与自定义方案

前端UI组件设计系统 【免费下载链接】semi-design &#x1f680;A modern, comprehensive, flexible design system and React UI library, AI-friendly built-in.&#x1f3a8;Provide 3000 Design Tokens, easy to build your design system. Make Semi Design to Any Design… · 2026/9/24 15:32:38

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介&#xff1a;这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源&#xff0c;围绕YOLOv8实现渔船作业监控系统&#xff0c;可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件&#xff0c;约24.21MB&#xff0c;以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介&#xff1a;面向时间序列数据建模的一维卷积神经网络完整实现&#xff0c;适合深度学习入门者及需要快速验证时序模型的研究者&#xff0c;能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小&#xff0c;只有3KB&#xff0c;内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L&#xff0c;而是舌尖上的L最近在几个方言群和语音教学社群里&#xff0c;反复看到有人发一句&#xff1a;“也说字母L&#xff1a;柔软的长舌”。初看以为是英语发音课笔记&#xff0c;点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码