我有3个网站:aaa.my-domain.com、bbb.my-domain.com和ccc.my-domain.com,它们都使用IIS7.5WindowsServer2008R2 64位上的一个通配符证书*.my-domain.com。该证书在一个月后到期,我的服务器上准备好了一个新的通配符证书*.my-domain.com。
我在UI中尝试了通常的方法,首先将证书替换为aaa.my-domain.com:

但是,当我按OK键时,我会得到以下错误:
你确定你想要重用这个HTTPS绑定并重新分配其他站点来使用新的证书吗?
当我单击“是”时,会收到以下消息:
-编辑网站绑定编辑此绑定将导致其他站点的HTTPS绑定不可用。你还想继续吗?
这条消息告诉我,https://bbb.my-domain.com和https://ccc.my-domain.com将变得不可用。至少在我完成了对这两个域名的证书替换之前,我还会有停机时间,对吗?
我在想一定有更聪明的方法来做这件事。可能是通过命令行将通配符证书替换为一个用于所有网站的新证书。我在网上找不到任何关于如何做到这一点的资源。有什么想法吗?
与通配符和绑定相关的站点:
与从命令行绑定证书相关的站点:
发布于 2014-07-08 15:08:34
答案是IIS 7实际上并不关心证书绑定。IIS 7只将网站绑定到一个或多个套接字。每个套接字是IP +端口的组合。来源:IIS7 7从命令行向站点添加证书
所以,我们要做的是在OS层上重新绑定证书.OS层控制SSL部件,因此您可以使用netsh将证书与特定套接字关联起来。这是通过netsh使用netsh http add sslcert完成的。
。
将证书绑定到套接字的命令是:netsh http add sslcert ipport=10.100.0.12:443 certhash=1234567890123456789012345678901234567890 appid={12345678-1234-1234-1234-999999999999}
这一部分解释了如何一步一步地进行。它假设您有一些网站(aaa.my-domain.com,bbb.my-domain.com)运行一个即将过期的*..my domain.com证书。您已经有了一个新的证书,您已经在服务器上安装了该证书,但尚未应用于IIS上的网站。
首先,我们需要找出两件事。新证书和应用程序的证书。
certhash指定证书的sha散列。此散列长20个字节,指定为十六进制字符串。appid指定标识拥有的应用程序的GUID,即IIS本身。执行certutil命令以获取机器上的所有证书:
certutil -store My
我不需要所有的信息,所以我需要:
certutil -store My | findstr /R "sha1 my-domain.com ===="
在输出中,您应该可以在服务器上找到您的新证书:
================ Certificate 5 ================ Subject: CN=*.my-domain.com, OU=PositiveSSL Wildcard, OU=Domain Control Validated Cert Hash(sha1): 12 34 56 78 90 12 34 56 78 90 12 34 56 78 90 12 34 56 78 90
1234567890123456789012345678901234567890是我们要找的certhash。它是没有空格的Cert Hash(sha1)。
让我们从查看所有证书套接字绑定。查看所有证书套接字绑定。开始:
netsh http show sslcert
特别是一个套接字
netsh http show sslcert ipport=10.100.0.12:443
输出:
SSL Certificate bindings:
----------------------
IP:port : 10.100.0.12:443
Certificate Hash : 1111111111111111111111111111111111111111
Application ID : {12345678-1234-1234-1234-123456789012}
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{12345678-1234-1234-1234-123456789012}是我们要找的appid。它是IIS本身的应用程序ID。在这里,您可以看到套接字10.100.0.12:443当前仍然绑定到旧的证书(Hash 111111111.)
打开命令提示符并以管理员身份运行它。如果您不以管理员身份运行它,您将得到一个错误,例如:“请求的操作需要提升(以管理员身份运行)。”
首先,使用以下命令删除当前的证书套接字绑定
netsh http delete sslcert ipport=10.100.0.12:443
你应该得到:
SSL Certificate successfully deleted
然后使用以下命令(发现这里)添加前面使用此命令找到的与appid和certhash (没有空格)绑定的新证书套接字。
netsh http add sslcert ipport=10.100.0.12:443 certhash=1234567890123456789012345678901234567890 appid={12345678-1234-1234-1234-123456789012}
你应该得到:
SSL Certificate successfully added
完成了。您刚刚替换了绑定到此IP +端口(套接字)的所有网站的证书。
https://serverfault.com/questions/610841
复制相似问题