选择新证书后,IIS 继续使用旧证书

选择新证书后,IIS 继续使用旧证书

我在 IIS 网站上有一个通过 Win-Acme 生成的 LetsEncrypt 证书。一段时间后,有人要求将其更改为由 RapidSSL 生成的其他证书。我收到了证书,成功将其安装到 IIS 中并在站点绑定中选择了它。但是,IIS 仍然继续使用旧证书并忽略新证书。

我尝试过的事情:

  • 从 IIS 和证书存储中删除证书
  • 重新启动 IIS 站点
  • 重新启动所有相关的应用程序池
  • 将所有相关应用程序池的超时设置Idle timeout为 1 分钟,并让它们全部终止 - 按照这个 GitHub 问题
  • 重新启动整个 Windows 服务器
  • 使用手动删除证书netsh http delete sslcert,根据命令输出,证书已被成功删除(如上所述这里),然后在 IIS 绑定中重新添加证书
  • 从 Win-Acme 中删除了预定的续订

然而,IIS 似乎仍然缓存了它并将其返回。

值得注意的事情:

  • 旧证书仍然有效,我更换过期证书时从未遇到任何问题
  • 没有负载均衡器或代理
  • 我一直使用 OpenSSL CLI 工具来检查证书,以防我的浏览器缓存它

来自服务器名称指示(SNI)的问题?

我做了一些研究,偶然发现了这一点Lex Li 在 stackoverflow 上的回答这篇博文,其中解释了这个问题实际上可能源于服务器名称指示。但是我确实验证了所有网站都在All UnassignedIP 地址上运行,并且所有 SSL 绑定都启用了 SNI - 无论是在 IIS GUI 中还是Hostname:port在 上netsh http show sslcert。此外,当我尝试使用-servername参数运行 OpenSSL CLI 工具时(据我所知,应该这里,进行与 SNI 相关的检查),它仍然返回旧证书:

openssl s_client -showcerts -connect my.example.com:443 -servername my.example.com

但是,如果我在使用查看证书后尝试重新添加绑定,netsh那么正确的证书出现。这似乎与上面链接的 SNI 问题描述相符,但是,这些帖子中的任何解决方案都不适用于我。

我真的开始对此感到困惑了 - 有什么关于如何进一步发展的想法吗?谢谢!

相关内容