IIS正在提供不正确的localhost证书

时间:2012-10-12 19:51:18

标签: iis ssl ssl-certificate

好的我有一个SSL问题,我似乎无法通过这台1 Win7 x64机器。多年来我一直在使用自签名证书,甚至在我之前发表过博客,因此我有经验。然而,有些事情正在发生,我现在无法弄清楚。

我有(2)在我的机器上创建并安装了localhost SSL证书。

  1. localhost(友好名称)在IIS(7.5)中发布和创建。它包含我的机器名称的'Issued To'和'Issued By'值:'DevMachine123'。这是为IIS中“默认网站”下配置的应用程序提供的证书。
  2. localhost使用makecert.exe工具创建的SSL证书,其中使用了CN = localhost(公用名)。它包含'localhost'的'Issued To'和'Issued By'值。对于在“默认网站”下配置的应用程序,这是我在IIS中为想要提供的SSL证书。
  3. 我得到的错误是:

      

    '本网站提供的安全证书是针对a   不同网站的地址。'

    当我查看从IE浏览器提供的证书时:它显示正在使用发布到'DevMachine123'的localhost证书而发布到localhost的本地主机(上面的#2)应该解决此问题。因此名称不匹配,因为'DevMachine123'与'localhost'不匹配。

    要做的另一点;我的证书已添加到“受信任的根证书颁发机构”,因此他们都是受信任的证书

    最后一点,我检查了IIS中我的计算机上的“默认网站”的https端口443绑定配置。我查看证书,它显示正确的 localhost证书已被绑定(上面#2与CN = localhost)。

    我觉得我已经覆盖了我的基地(是的,我看过thisthis所以请不要重新发帖。我在这里缺少什么?

    谢谢!

4 个答案:

答案 0 :(得分:29)

我遇到了类似的问题,并且还经历了上面提到的网站绑定检查。我运行了以下netsh命令

netsh http show sslcert

这向我展示了两个SSL证书绑定。一个在IP:端口0.0.0.0:443,具有正确的证书,一个在IP:端口[::]:443,证书已过期。我为本地计算机打开了CertMgr.msc(有关说明,请参阅here)并搜索无效证书并发现它已过期。

要解决此问题,我执行了以下操作

  1. netsh http delete sslcert ipport=[::]:443
  2. iisreset /restart

答案 1 :(得分:6)

非常类似于@IsolatedStorage的答案,但有一些更详细的帮助我。

首先,几个点可能与你相同

  • 我试图更新证书,因为它已过期。
  • 我有多个域绑定到同一个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

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

您想要在此文件中搜索您从digicert.com获得的错误哈希值(或您从theChrome获得的指纹)。

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

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

现在我们已经确认这是“坏”' thumbprint和预期的单个记录我们可以使用以下命令删除它:

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

SSL Certificate successfully deleted

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

可能希望IISRESET在这里确保以后没有意外。

最后注意事项:如果您正在使用集中式证书存储,并且您看到不稳定的行为,甚至试图确定它是否从那里获取您的证书,或者不要担心 - 它&# 39;不是你的错。它似乎有时会立即获取新文件,但缓存旧文件。在进行任何类型的更改后打开并重新启动SSL绑定似乎会重置它,但不是100%的时间。

祝你好运: - )

答案 2 :(得分:2)

相同的症状

将下拉列表中的HTTPS绑定更改为服务器IP(在站点绑定对话框中)。它被设置为“所有未分配”有关于覆盖现有证书/ IP组合的警告,我接受了,并且问题已解决。

答案 3 :(得分:0)

确认您在IIS中每个绑定也只有一个站点集。

如果安装了默认站点和单独的站点,则它们可能都在同一端口上具有HTTPS绑定。如果发生这种情况,则提供的证书可能是其他站点的证书。