为何Postman访问同域子域名B时提示证书过期,证书却未到期?
使用Postman访问同一主域名下的两个URL:
- A:
https://www.example.com - B:
https://other.example.com
A请求响应正常,但B返回提示:Warning: Certificate has expired。奇怪的是,两个请求返回的是同一张还有2个月才过期的证书,证书主体信息如下:
commonName: "example.com" alternativeNames: "DNS:example.com, DNS:*.example.com"
排查方向
清理Postman本地缓存
Postman会缓存SSL证书,可能B请求命中了旧的过期缓存。可以关闭Postman后删除其缓存目录(Windows:%APPDATA%\Postman;macOS:~/Library/Application Support/Postman;Linux:~/.config/Postman),或者在设置中关闭再重新开启「SSL certificate verification」强制刷新证书。检查DNS解析与证书链
虽然域名匹配通配符,但A、B可能解析到不同服务器,或B对应的服务器存在中间证书过期的情况。用nslookup对比两个域名的解析结果,再通过openssl s_client -connect [域名]:443命令分别查看两个域名返回的完整证书链,确认是否存在过期的中间证书。排查Postman配置与版本
检查Postman是否开启了全局代理,代理可能返回过期证书;同时尝试更新Postman到最新版本,排除版本bug导致的验证异常。清除系统级证书缓存
若Postman依赖系统证书存储,可能系统缓存了B域名的旧证书。Windows可执行certutil -urlcache * delete清理;macOS在「钥匙串访问」中搜索并删除example.com相关旧证书;Linux根据发行版清理对应证书缓存。
内容的提问来源于stack exchange,提问作者gicig

