好的我有一个SSL问题,我似乎无法通过这台1 Win7 x64机器。多年来我一直在使用自签名证书,甚至在我之前发表过博客,因此我有经验。然而,有些事情正在发生,我现在无法弄清楚。
我有(2)在我的机器上创建并安装了localhost SSL证书。
我得到的错误是:
'本网站提供的安全证书是针对a 不同网站的地址。'
当我查看从IE浏览器提供的证书时:它显示正在使用发布到'DevMachine123'的localhost证书而不发布到localhost的本地主机(上面的#2)应该解决此问题。因此名称不匹配,因为'DevMachine123'与'localhost'不匹配。
要做的另一点;我的证书已已添加到“受信任的根证书颁发机构”,因此他们都是受信任的证书。
最后一点,我检查了IIS中我的计算机上的“默认网站”的https端口443绑定配置。我查看证书,它显示正确的 localhost证书已被绑定(上面#2与CN = localhost)。
我觉得我已经覆盖了我的基地(是的,我看过this和this所以请不要重新发帖。我在这里缺少什么?
谢谢!
答案 0 :(得分:29)
我遇到了类似的问题,并且还经历了上面提到的网站绑定检查。我运行了以下netsh命令
netsh http show sslcert
这向我展示了两个SSL证书绑定。一个在IP:端口0.0.0.0:443,具有正确的证书,一个在IP:端口[::]:443,证书已过期。我为本地计算机打开了CertMgr.msc(有关说明,请参阅here)并搜索无效证书并发现它已过期。
要解决此问题,我执行了以下操作
netsh http delete sslcert ipport=[::]:443
iisreset /restart
答案 1 :(得分:6)
非常类似于@IsolatedStorage的答案,但有一些更详细的帮助我。
首先,几个点可能与你相同
首先,我建议强烈要求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绑定。如果发生这种情况,则提供的证书可能是其他站点的证书。