fat1测试环境证书过期排查梳理过程
fat1测试环境证书过期排查梳理过程
根因与现状
fat1.myTest.com:单域名证书(DigiCert Encryption Everywhere),已过期 → 导致 Postman / 浏览器 NET::ERR_CERT_DATE_INVALID。
www.myTest.com:泛域名证书(WoTrus *.myTest.com),有效。
⚠️ 注意:泛域名 *.myTest.com 理论上能覆盖 fat1.myTest.com,但当前服务器对 fat1 配置了独立的单域名证书(且已过期),SNI 匹配时优先返回了过期的单域证书(之前你带错 SNI 时甚至返回了 *.geyunzuche.com,说明服务器多证书/默认证书配置较混乱)。
1.在服务器上面执行
openssl s_client -connect fat1.myTest.com:443 -servername fat1.myTest.com openssl s_client -connect fat1.myTest.com:443 -servername fat1.myTest.com 2>/dev/null | openssl x509 -noout -dates -subject
关键信息:
depth=0 CN = fat1.myTest.com verify error:num=10:certificate has expired notAfter=Oct 22 23:59:59 2026 GMT Verify return code: 10 (certificate has expired)
客户端
↓
DNS → CDN / WAF / SLB(阿里云/腾讯云)
↓ (SSL 在这里终结)
Nginx(VM-1-181-centos)只收 HTTP 或 内网 HTTPS
或者在浏览器上面访问,可以在浏览器的左侧看到,证书是否过期等情况
排查锁定问题: 快速定位命令(确认链路)
# 1. 看 DNS 解析到哪 dig fat1.myTest.com +short 返回: 118.195.162.XX # 2. 看 IP 归属 curl ipinfo.io/118.195.162.XX 内网地址: XX.XX.22.212 [root@VM-1-181-centos /]$curl ipinfo.io/118.195.162.XX # 3. 直接连 IP 看证书(绕过 CDN) openssl s_client -connect 118.195.162.XX:443 -servername fat1.myTest.com
2. 1.180,1.181 是生产环境的证书服务器
fat1是在2.212服务器上面,不要搞错了。
##查看文件的位置
nginx -T 2>/dev/null | grep -A5 "myTest.com" nginx -T 2>/dev/null | grep -B20 "fat1.myTest.com" | head -30
在腾讯云上面搜索ssl证书,找到证书然后下载到本地,然后在上传到22.212的 cert目录下面
证书文件到底在哪(直接定位命令)
# 1. 全盘找 fat1 相关证书 find / -iname "*fat1*" 2>/dev/null # 2. 找 Nginx 里所有证书引用 grep -r "ssl_certificate" /usr/local/nginx/conf # 3. 看当前 443 实际加载的证书(如果本机 curl 自己) echo | openssl s_client -connect 127.0.0.1:443 -servername fat1.myTest.com 2>/dev/null | openssl x509 -noout -subject -dates # 4. 看编译/运行路径 nginx -V 2>&1 | grep -o "prefix=[^ ]*" ps -ef | grep nginx
3.找到文件之后,下载到本地,编辑修改。
先备份文件
mv 原来文件,新文件名称
cp 原来文件,新文件名称
方案 A:复用你已有的有效泛域名证书(最快)(且 *.myTest.com 有效,覆盖 fat1)
bundle 或 fullchain 文件
server {
listen 80;
listen 443 ssl;
server_name fat1.myTest.com;
ssl_certificate cert/myTest.com.crt; -- 关键是修改文件路径,替换 crt,pem文件都可以。
ssl_certificate_key cert/myTest.com.key; -- 关键是修改文件路径,替换 key后缀文件
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM;
ssl_prefer_server_ciphers on;
client_max_body_size 20m;
}
方案 B:单独给 fat1 重签新证书
如果一定要单独证书:
腾讯云 SSL 控制台申请 fat1.myTest.com(DNSPod 验证)
下载 Nginx 格式(fullchain + key) ,接下来同方案A一致
4.检查和生效nginx
nginx -t nginx -s reload
5.检查证书文件
# 查找证书文件: find / -name "myTest.com.key" 2>/dev/null /usr/local/nginx/conf/cert/myTest.com.key # 查看当前证书有效期 openssl x509 -in /usr/local/nginx/conf/cert/myTest.com.crt -noout -dates -subject notBefore=Aug 5 00:00:00 2026 GMT notAfter=Feb 19 23:59:59 2027 GMT openssl x509 -in /usr/local/nginx/conf/cert/myTest.com.crt -noout -subject -issuer -dates subject= /CN=*.myTest.com issuer= /C=CN/O=WoTrus CA Limited/CN=WoTrus RSA DV SSL CA 2 notBefore=Aug 5 00:00:00 2026 GMT notAfter=Feb 19 23:59:59 2027 GMT nginx -V 2>&1 | grep prefix configure arguments: --prefix=/usr/local/nginx/ --with-http_ssl_module --with-pcre --with-http_stub_status_module --with-http_gzip_static_module --with-stream=dynamic --with-http_realip_module --add-module=/root/lua-nginx-module-master --add-module=/root/nginx_upstream_check_module-master --add-module=/root/nginx-upsync-module-master
思路2:
如果你不想动 fat1 配置,还有个更省事的办法
# 备份旧的
cp cert/fat1.myTest.com.pem cert/fat1.myTest.com.pem.bak cp cert/fat1.myTest.com.key cert/fat1.myTest.com.key.bak
然后把新文件按原来的文件名称放上去。
最后:nginx -s reload
科普:
pem 和 crt 在 Nginx 里本质是一回事,区别只是文件后缀名。
ssl_certificate cert/myTest.com.pem; ✅ 可以
ssl_certificate cert/myTest.com.crt; ✅ 也可以
另外的可能:
可能性 3:SLB(负载均衡)上配了 HTTPS 监听
阿里云/腾讯云 CLB/ALB 可以直接绑证书
后端 Nginx 只跑 HTTP
证书在 负载均衡控制台
如果是 SLB
云厂商控制台 → 负载均衡 → 监听器 → HTTPS:443 → 证书
替换成新证书
浙公网安备 33010602011771号