K8s集群Nginx Ingress下Let's Encrypt TLS证书仅部分用户访问提示过期
问题原因排查方向
- DNS解析不一致
异常成员的本地DNS解析结果和正常成员不同,要么是本地hosts文件硬编码了域名对应旧集群节点、历史环境的IP,要么是本地DNS服务器缓存了旧的解析记录,导致请求发送到了未更新证书的节点。
排查方式:对比异常成员和正常成员执行nslookup myurl的返回结果,同时检查异常设备的hosts文件是否有对应域名的手动配置。 - Ingress Nginx实例证书未同步
多副本部署的Ingress Nginx存在部分实例未监听到证书Secret的更新,内存中仍加载旧的过期证书,请求分发到这批实例时就会返回过期错误,分发到已同步证书的实例就正常。
排查方式:手动删除所有Ingress Nginx Pod触发重建,强制所有实例重新拉取最新的证书Secret,验证问题是否消失。 - 客户端根证书信任问题
异常客户端设备未更新根证书列表,对Let's Encrypt的证书链校验失败误判为过期。2021年Let's Encrypt旧根证书DST Root CA X3过期后,未打系统补丁的老旧操作系统(如CentOS 7早期版本、Windows 7未开启根证书自动更新)就会出现该问题。
排查方式:对比异常成员和正常成员的操作系统版本、curl版本,检查系统根证书存储是否包含ISRG Root X1根证书。 - 办公网络中间设备拦截
异常成员所在的办公网络配置了SSL中间人代理、防火墙,这类设备缓存了旧的过期证书,或者自身的证书校验规则异常导致误报。
排查方式:让异常成员切换到手机热点等独立网络重新测试,若切换网络后恢复即可定位为网络中间设备问题。
内容的提问来源于stack exchange,提问作者soling
相关产品推荐
相关产品推荐

