IIS 7仍然提供旧的SSL证书

我在IIS7中安装了一个新的SSL证书,删除了旧证书,并为新证书设置了绑定 – 所以https现在只绑定到新证书。

我重新启动IIS7(和Windows 2008服务器本身),并使用以下命令检查证书:

netsh http show sslcert 

这只显示了新的证书,正如我所料

 certutil -store MY 

这也只是显示了新的证书,而不是我所期望的那样

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

我也使用具有pipe理员权限的帐户。

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

任何人都可以帮我弄清楚我要出错的地方吗? 我如何驱除旧的幻影证书?

非常感谢!

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

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

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

input您的网站https://example.com ,它会显示过期date和指纹(MS称为证书散列)。 它可以实时查找,因此您不必担心浏览器(或中间服务器)是否正在caching某些内容。

如果您正在使用集中式证书存储区,则希望100%确定.pfx文件是最新版本,因此请转至您的商店目录并运行以下命令:

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

这会告诉你到期date和散列/指纹。 很显然,如果这个失效date是错误的,你很可能只是将错误的证书导出到文件系统,所以先去修复。

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

运行命令:

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

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

你需要在这个文件中search你从digicert.com得到的错误散列(或者你从digicert.com获得的指纹)。

对我来说,这产生了以下结果。 你会看到它绑定到一个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 

现在我们已经validation了这是'坏'的指纹,并且期望单个logging,我们可以用这个命令删除它:

 C:\Windows\system32>netsh http delete sslcert ipport=10.0.0.1:443 SSL Certificate successfully deleted 

希望如果你现在回到Digicert并重新运行命令,它会给你预期的证书指纹。 你应该检查所有的SAN名称,如果你有任何只是为了确保。

在这里大概想要IISRESET,以后肯定不会有什么惊喜的。

最后说明:如果您使用集中式证书存储,并且您看到不正常的行为,试图甚至确定是否从那里拿起您的证书,或者不要担心 – 这不是您的错。 它似乎有时立即拿起新的文件,但caching旧的文件。 做任何改变之后打开和重新保留SSL绑定似乎重置它,但不是100%的时间。

祝你好运 :-)

检查绑定到IIS中的站点的证书。 您可以右键单击该网站并select编辑绑定。 在那里,您应该看到与SSL证书关联的端口443的绑定。 这可能仍然指向旧的。

我刚刚解决了。 服务器实际上坐在ISA服务器后面,所以我们还必须将新的SSL证书安装到ISA服务器。

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

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

从IISpipe理器 – >(IIS树根) – >服务器证书图标,select旧的证书,然后单击操作窗格中的删除。

我在IPv6升级过程中遇到过这个问题。 我有IIS提供redirect,以防有人试图通过HTTP访问服务,而实际上这不是一个基于Web服务器的服务。 我更新了实际的服务(语音服务器)为IPv6,但是我没有更新redirect绑定以包含IPv6地址。

这导致决议失败到一个全球范围内的所有网站,其上已经过时的证书。 由于捕获所有简单的404,似乎该网站不工作,实际上是在打错了网站。