IIS7 从命令行将证书添加到站点

IIS7 从命令行将证书添加到站点

我通过 APPCMD 发现,大多数 IIS7 配置都可以通过命令行进行。有一件事我还没搞清楚该怎么做:在 IIS 管理器中,绑定 -> 编辑 -> 选择 SSL 证书。

“appcmd set site /site.name:foo /?”列出了 2 个以“bindings”开头的键(“protocol”、“bindingInformation”),但我还没有发现它们是什么。

其他地方建议“netsh”可以做到这一点,但“netsh http show sslcert”显示我的证书绑定到“0.0.0.0:443”而不是特定的 IIS7 站点。

假设我知道某个站点的 IIS7 名称/ID 以及我的证书的哈希值(这已经是此处其他站点的证书),是否有任何方法可以从命令行将其设为另一个 IIS7 站点的 SSL 证书?

更新:我在 UI 中执行了此操作,并对注册表进行了差异处理,发现 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\SslBindingInfo\0.0.0.0:443(也在 ControlSet0001 中)是使用我的 SslCertHash 创建的,并且 AppId 看起来就像“netsh http show sslcert”打印的 UUID,但每个部分都是反向的(81e1c34d4be121...)。我想我读到过这是IIS 应用程序的 AppId,但我不确定。当我在 IIS 管理器中删除站点并切换到使用此 SSL 证书的另一个站点时,它在注册表中不会发生变化。无论如何,这看起来netsh提供的粒度级别相同,所以我真的不知道 IIS 管理器从哪里获得其每个站点绑定 SSL 证书分配。

答案1

需要指出的是,这与 IIS6 及更早版本不同。在 IIS 6 中,元数据库包含套接字、与套接字关联的证书哈希等。在 7 中,IIS 配置仅包含一个套接字 (abcd:443),并让操作系统负责该套接字上的证书管理内容。(通过 GUI,它的设计大致与以前一样)。规则是:您只能将一个证书绑定到一个套接字。

互联网信息服务:

在 IIS 7 中,IIS 实际上并不关心证书绑定。我知道,有点惊讶,对吧?

在 IIS7 中,所有 IIS 配置都只是将 IIS 绑定到特定套接字(IP + 端口)。就是这样。当您不需要在每个设备上唯一化证书哈希时,可以使配置在各个设备之间更具可移植性。

IIS 配置使用以下方式管理亚太经合组织或者{在此处插入选择的 IIS 7 管理工具},通过为站点创建到套接字的绑定。

操作系统:

OS 层接管 SSL 部分的控制,因此您使用 NETSH 将证书与特定套接字关联。

这是通过网信

Sukesh 很久以前就发布了关于这两方面的指南,现在仍然有效: https://stackoverflow.com/questions/591597/how-to-assign-a-ssl-certificate-to-iis7-site-from-command-prompt

相关内容