IIS绑定新RapidSSL证书后仍使用旧Let's Encrypt证书的排查求助
IIS绑定新RapidSSL证书后仍使用旧Let's Encrypt证书的排查求助
大家好,我遇到了一个非常棘手的问题,想请各位帮忙排查:
我之前在IIS网站上通过Win-Acme生成并部署了Let's Encrypt证书,现在需要换成由RapidSSL签发的新证书。我已经拿到新证书,成功安装到IIS中,并且在站点的绑定设置里选中了这个新证书,但IIS却始终在使用旧的Let's Encrypt证书,完全无视新证书的存在。
我已经尝试过以下方法,但都没有解决问题:
- 从IIS和证书存储中彻底删除了旧证书
- 重启了目标IIS站点
- 重启了所有相关的应用程序池
- 将相关应用池的闲置超时设置为1分钟,等待它们自动终止(这是参考某个GitHub问题的建议)
- 重启了整个Windows服务器
- 使用命令
netsh http delete sslcert手动删除证书,命令输出显示删除成功,之后重新在IIS绑定中添加了新证书 - 删除了Win-Acme的自动续期计划任务
即便做了这么多操作,IIS似乎还是缓存着旧证书,返回给请求的依旧是它。
有几个值得注意的点:
- 旧证书目前仍在有效期内,我之前替换过期证书时从来没有遇到过这类问题
- 服务器没有配置负载均衡或反向代理
- 我一直使用OpenSSL CLI工具来检查证书,排除了浏览器缓存的可能性
我怀疑问题可能出在*Server Name Indication(SNI)*上?做了一些研究后,我看到相关的说明提到这类证书不生效的问题可能源于SNI配置。我已经验证过所有站点都绑定在“全部未分配”IP地址上,并且所有SSL绑定都启用了SNI——不管是在IIS图形界面中查看,还是通过netsh http show sslcert命令查看主机名:端口的配置,结果都是正确的。另外,我特意使用带-servername参数的OpenSSL命令(用来针对SNI场景做检查)测试,返回的依旧是旧证书:
openssl s_client -showcerts -connect my.example.com:443 -servername my.example.com
不过有个奇怪的现象:当我用netsh查看证书信息后,重新添加绑定,此时能看到正确的新证书。这和我看到的SNI相关问题描述很匹配,但那些帖子里给出的解决方法对我都不起作用。
我现在真的有点摸不着头绪了,有没有大佬能给我一些下一步排查的思路?非常感谢!
备注:内容来源于stack exchange,提问作者prof
相关产品推荐
相关产品推荐

