IIS 7仍在提供旧的SSL证书


27

我在IIS7中安装了新的SSL证书,删除了旧证书,并设置了新证书的绑定-因此,https现在仅绑定到新证书。

我重新启动了IIS7(以及Windows 2008 Server本身),并使用以下命令检查了证书:

netsh http show sslcert

如我所料,这仅显示了新证书

certutil -store MY

正如我所料,这也只显示了新证书而不是旧证书

我还打开了mmc并检查了那里的证书,而我只看到了新证书而不是旧证书。

我还使用具有管理员权限的帐户。

但是,当我打开浏览器(从任何计算机)并转到https站点时,它仍在使用旧证书。即使我从浏览器中删除了旧证书,它仍然会发送旧证书而不是新证书。

谁能帮助我找出我要去的地方?我该如何驱逐旧的幻像证书?

Answers:


28

首先,对您来说可能是相同的几点

  • 我正在尝试更新证书,因为它已过期。
  • 我有多个域绑定到同一IP。它们碰巧是SAN证书,但这可能无关紧要。
  • 我正在尝试使用集中式证书存储。再次,我认为这与我的大部分回答无关。
  • 我已经尝试过更新证书,但是没有显示新日期。
  • 如果您的旧证书已经过期,您现在可能会感到恐慌。深吸一口气...

首先,我强烈建议您去https://www.digicert.com/help/下载他们的DigiCert工具。您也可以在线使用它。

输入您的网站https://example.com,它将显示您的到期日期和指纹(MS称为证书哈希)。它进行实时查找,因此您不必担心浏览器(或中间服务器)是否正在缓存某些内容。

如果您使用的是集中式证书存储,则需要100%确保.pfx文件是最新版本,因此请转到存储目录并运行以下命令:

C:\WEBSITES\SSL> certutil -dump www.example.com.pfx

这将显示您的到期日期和哈希/缩略图。显然,如果此到期日期不正确,则可能是您将错误的证书导出到了文件系统,所以请先对其进行修复。

如果您正在使用CCS,则假设此certutil命令为您提供了(更新证书的)预期的到期日期,则可以继续。

运行命令:

netsh http show sslcert > c:\temp\certlog.txt
notepad c:\temp\certlog.txt

您可能在这里有很多东西,因此在文本编辑器中打开它更容易。

您需要在此文件中搜索从中获取的WRONG哈希digicert.com(或从Chrome中获取的指纹)。

对我来说,这产生了以下内容。您会看到它是绑定到IP的,而不是我期望的域名。这就是问题。似乎(无论出于何种原因,我不确定)都优先于刚刚为其更新的IIS中的绑定集example.com

IP:port                      : 10.0.0.1:443
Certificate Hash             : d4a17e3b57e48c1166f18394a819edf770459ac8
Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
Certificate Store Name       : My
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check                  : Enabled
Revocation Freshness Time    : 0
URL Retrieval Timeout        : 0
Ctl Identifier               : (null)
Ctl Store Name               : (null)
DS Mapper Usage              : Disabled
Negotiate Client Certificate : Disabled

我什至不知道此绑定来自哪里-我的默认站点上甚至没有任何SSL绑定,但是该服务器已经使用了几年,我认为某些东西已经损坏并卡住了。

因此,您将要删除它。

为了安全起见,您首先需要运行以下命令以确保仅删除此一项:

C:\Windows\system32>netsh http show sslcert ipport=10.0.0.1:443

SSL Certificate bindings:
-------------------------

IP:port                      : 10.0.0.1:443
Certificate Hash             : d4a17e3b57e48c1166f18394a819edf770459ac8
Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
Certificate Store Name       : My
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check                  : Enabled
Revocation Freshness Time    : 0
URL Retrieval Timeout        : 0
Ctl Identifier               : (null)
Ctl Store Name               : (null)
DS Mapper Usage              : Disabled
Negotiate Client Certificate : Disabled

现在,我们已经验证了这是“错误的”指纹,并且可以使用以下命令将其删除:

C:\Windows\system32>netsh http delete sslcert ipport=10.0.0.1:443

SSL Certificate successfully deleted

希望如果现在返回Digicert并重新运行该命令,它将为您提供预期的证书指纹。如果有任何名称,应检查所有SAN名称。

可能想在这里进行IISRESET,以确保以后不会出现任何意外。

最后说明:如果您使用集中式证书存储,并且看到不稳定的行为,甚至试图确定它是否从那里获取证书,请不要担心-这不是您的错。似乎有时会立即提取新文件,但会缓存旧文件。进行任何形式的更改后,打开并重新保存SSL绑定似乎可以将其重置,但不是100%的时间。

祝好运 :-)


3
您是Simons中的Simon。在我们的案例中,事实证明我们的服务器已经“缓存”了过期的证书,[::1]:443而在IIS中更新证书仅更新了的记录0.0.0.0:443。谢谢!
tuespetre '16

1
这解决了我在同一IP上存在多个域的问题。不使用集中式证书存储。
克里斯·卡罗尔

1
我不得不使用几次。PLESK虚拟主机管理软件有时会弄乱证书​​绑定,而我最终需要上述netsh命令来删除有问题的绑定。不知道所有版本都受影响,但是我正在Windows Server 2016上使用
PLESK

就我而言,它是通过主机名和端口来确定的。因此,要按主机名过滤和删除,命令应为:“ netsh http show sslcert hostnameport = www.example.com:443”和“ netsh http delete sslcert hostnameport = www.example.com:443”
Karthik Jayapal

14

检查绑定到IIS中的站点的证书。您可以右键单击该站点,然后选择编辑绑定。在其中,您应该看到与SSL证书关联的端口443的绑定。那也许仍然指向旧的。


我检查了一下,端口443绑定中的证书是新证书,而不是旧证书。感谢您的建议。
joechip 2011年

1
很奇怪,我从未发生过这种情况。虽然我从不删除旧证书。您如何确定仍旧获得旧证书?它表明它已经过期了吗?
塔塔斯(Tatas)

是的,在浏览器中,您可以检查证书的详细信息(到期日期等)及其IIS7服务的旧证书。
joechip 2011年

1
我已经通过-Chrome浏览器看到了这一点。Chrome会缓存旧证书并将其显示给用户。
TomTom 2014年

3

我刚刚解决了。该服务器实际上位于ISA服务器后面,因此我们还必须将新的SSL证书安装到ISA服务器。


3

我有同样的问题,还检查了绑定。我在IIS中安装了2个应用程序,一个使用新证书,一个使用旧证书。

要修复,我必须从服务器上完全删除证书(然后可能需要重新启动)。

在IIS管理器->(IIS树根)->服务器证书图标中,选择旧证书,然后在“操作”窗格中单击“删除”。


1
同样,我们实际上还有一个附加的STOPPED站点,它引用了旧证书,并且一旦我们将该站点更新为使用新证书,实际的实时站点就开始显示新证书!
行动丹

1

我在IPv6升级过程中遇到了这种情况。如果有人尝试通过HTTP访问实际上不是基于Web服务器的服务,则我让IIS提供重定向。我将实际服务(语音服务器)更新为IPv6,但是我没有更新重定向的绑定以包括IPv6地址。

这导致解决方案故障转移到全局绑定的捕获所有上面具有过期证书的站点。由于捕获全部都是404,因此似乎该站点无法正常工作,而实际上却是打错了站点。


0

万一有人仍然偶然发现这个问题。我的解决了

C:\inetpub\wwwroot

然后,您将找到一个web.config文件,使用记事本将其打开,并使用

<httpRedirect enabled="true" destination="http://foo.company.org" />

保存并再次尝试访问IIS服务器的localhost或根站点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.