我在IIS7中安装了一个新的SSL证书,删除了旧证书并设置了新证书的绑定-所以https现在只绑定到新证书。
我重新启动了IIS7 (以及Windows2008Server本身),并使用以下命令检查了证书:
netsh http show sslcert这只显示了新的证书,正如我所预期的那样。
certutil -store MY这也只是显示了新的证书,而不是旧的证书,正如我所预期的那样。
我还打开了mmc,检查了那里的证书,我只看到了新的,而没有看到旧的。
我还使用了一个具有管理员权限的帐户。
但是,当我打开浏览器(从任何计算机)并转到https站点时,它仍然使用旧的证书。即使当我从浏览器中删除旧证书时,仍然会发送旧的证书,而不是新的证书。
有人能帮我找出我哪里出错了吗?我怎样才能驱除旧的幻影证书?
发布于 2016-04-08 08:37:58
首先,对你来说可能是相同的几点
首先,我强烈建议使用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获得的错误散列(或从fromChrome获得的指纹)。
对我来说,这产生了以下结果。你会看到它是绑定到一个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绑定,但是这个服务器已经有几年的历史了,我认为有些东西被破坏和卡住了。
所以你会想要删除它。
为了安全起见,您需要首先运行以下comand,以确保只删除这一项:
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%的时间。
祝你好运:-)
发布于 2011-10-11 15:41:36
检查绑定到IIS中站点的证书。您可以右键单击网站并选择“编辑绑定”。在那里,您应该看到与SSL证书相关联的端口443的绑定。可能还在指向旧的那个。
发布于 2014-06-17 15:02:14
我也有同样的问题,也检查了绑定。我在IIS中安装了两个应用程序,一个使用新证书,一个使用旧证书。
为了解决这个问题,我必须从服务器上完全删除证书(然后可能是重新启动)。
从IIS -> (IIS树根) ->服务器证书图标中,选择旧证书并在“操作”窗格中单击“删除”。
https://serverfault.com/questions/320495
复制相似问题