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

我通过APPCMD发现,通过命令行可以实现IIS7的大部分configuration。 有一件事我还没有想出如何做:在IISpipe理器中,绑定 – >编辑 – >select一个SSL证书。

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

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

鉴于我知道一个站点的IIS7名称/ ID,以及我的证书(这里已经是其他站点上的证书)的散列,有没有办法使它成为另一个IIS7站点的SSL证书,从命令行?

更新 :我做了这个在用户界面,diff'dregistry,并看到HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet的\ Services \ HTTP \ Parameters \ SslBindingInfo \ 0.0.0.0:443(也在ControlSet0001)与我的SslCertHash创build一个AppId,看起来就像“netsh http show sslcert”打印的UUID,但每个部分都是相反的(81e1c34d4be121 …)。 我想我读了这是I​​IS应用程序 AppId,但我不确定。 当我在IISpipe理器中删除站点并使用此SSL证书切换到其他站点时,它在registry中不会更改。 无论如何,这看起来像netsh提供的粒度相同的水平,所以我真的不知道IISpipe理器获取其每站点绑定SSL证书分配的位置。

为了调出位,这与IIS6及更早版本不同。 在IIS 6中,configuration数据库包含套接字,与套接字关联的证书哈希,等等。 在7,IISconfiguration只包含一个套接字(abcd:443),让操作系统担心该套接字上的证书pipe理的东西。 (通过GUI,它的devise大致看起来如何)。 规则是:你只能有一个证书绑定到一个套接字。

IIS:

在IIS 7中,IIS实际上并不关心证书绑定。 我知道,就像喘气,对吧?

在IIS7中,所有IISconfiguration都将IIS绑定到特定的套接字(IP +端口)。 而已。 当您不需要为每个证书散列分配证书散列时,使得configuration之间的configuration更加便于携带。

使用APPCMD或{插入selectIIS 7pipe理工具在这里} IISpipe理,通过创build一个绑定到一个套接字的站点。

OS:

操作系统层接pipe了SSL部分的控制,因此您使用NETSH将证书与特定的套接字相关联。

这是通过NETSH完成的。

Sukesh很久以前发布了一个指南,它仍然是有效的: https ://stackoverflow.com/questions/591597/how-to-assign-a-ssl-certificate-to-iis7-site-from-command -提示