如何修复 Windows Server 上 LetsEncrypt 证书链的问题?

如何修复 Windows Server 上 LetsEncrypt 证书链的问题?

我一直使用 LetsEncrypt 为 Windows 2012 R2 服务器上的网站生成证书。它运行良好,直到最近我更新了证书。

LetsEncrypt 最近进行了更改,将中间证书“Let's Encrypt Authority X1”替换为“Let's Encrypt Authority X3”。问题是,更新后的证书的授权密钥保持不变。

https://community.letsencrypt.org/t/upcoming-intermediate-changes/

因此,当我通过服务器证书续订时,它们现在是由“X3”机构颁发的,但是由于密钥相同,Windows 证书存储似乎使用它找到的第一个结果(按字母顺序?)构建证书链,结果是旧的“X1”证书。

问题就出在这里。对于某些客户端/浏览器(如 Chrome),这没问题,它们只查看中间证书的密钥。但是,其他客户端更严格,还会检查名称,然后失败(X1 而不是 X3)。

修复此问题的第一步是删除 X1 中间证书,并确保我的所有服务器证书都已更新为由 X3 颁发。现在一切看起来都正确了,至少在 Windows 中的证书存储中是如此(链正确显示了根颁发机构 -> X3 -> 服务器证书)。

我现在遇到的问题是,为什么客户端继续显示错误的证书链 (X1),我似乎无法弄清楚。据我所知,该中间证书在我的服务器上根本不存在。

我尝试过通常的重启服务器,也偶然发现了这篇类似的帖子,尝试了那里的步骤几次,但没有任何运气 -

https://serverfault.com/a/706278/182874

知道我可能遗漏了什么吗?IIS 缓存证书链似乎存在一些问题,因为我尝试在多个客户端/机器上进行连接,但都遇到了同样的问题。只是不知道如何清除这个“证书链缓存”,或者它是否存在。

答案1

我刚刚在我的服务器上遇到了这个问题。这是在 2008R2 上。

  1. 确保所有证书都使用新的中间证书,因为我们将删除旧证书
  2. 从本地计算机和所有本地用户帐户中删除 X1 中级证书
  3. 删除 IIS 中每个证书的安全绑定
  4. 在 IIS 中重新添加每个安全绑定

2012R2 可能还存在一些其他问题,解决方案发布在https://community.letsencrypt.org/t/iis-8-5-building-incorrect-chain-with-lets-encrypt-authority-x3/13320/84有不少人正在上班

答案2

另一个答案对我不起作用(在 9 月 30 日证书到期事件之后)。Windows 自动重新添加了证书。我不知道它从哪里获取的,但它是无法删除的。

对我而言,有效的方法是进入“DST Root CA X3”证书的扩展属性,然后选择“禁用此证书的所有用途”。之后,我只需重新启动 IIS,它就会提供正确的链。

注意:即使 Windows 在证书管理器中显示了正确的链,IIS 仍然提供无效的(且过期的)旧链...

DST Root CA X3 的证书属性,已选中“禁用此证书的所有用途”。

相关内容