5

我正在尝试为使用 Microsoft.Web.Administration 库(.NET Framework)检查标志 SNI(服务器名称指示)的 IIS 8 创建绑定。

这对我来说是必要的,因为我想在 IIS 下为同一个网站获取多个 SSL 绑定,所有这些都只使用一个 IP 地址。这是 IIS 8 的主要新功能之一。

我一直在研究 Binding 类,但找不到任何标志或选项来指示它。

当前的 Microsoft.Web.Administration v 7.0.0.0 是否可行?我需要一个我还没有找到的新版本吗?

我知道版本 7.9.0.0 仅适用于 IIS express,这不是我的方案,所以我没有研究它。

4

2 回答 2

8

我终于设法使用Microsoft.Web.Administrationfrom the folder%windir%\system32\inetsrv\但仅在带有IIS 8的 Windows 8/Windows 2012中做到了。

这些库在类函数中有SslFlags选项。微软还没有关于这个新的重载的文档,或者至少我还没有找到它。AddBindingCollection

可以在这个SslFlags.Sni中使用,并完美地创建与 SNI 检查的绑定。

于 2013-12-18T14:04:31.290 回答
3

当前的 Microsoft.Web.Administration v 7.0.0.0 是否可行?

事实上,通过手动将SslFlags属性添加到<binding>节点:

Binding mySslBinding;
bool enableSni;

using (var serverManager = new ServerManager())
{
    // ... create or get value of mySslBinding...

    mySslBinding.SetAttributeValue("sslFlags", Convert.ToInt32(enableSni ? 1 : 0));

    serverManager.CommitChanges();
}

请参阅此处的文档SslFlagshttps ://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/sites/site/bindings/binding

请注意,在具有任何早于 8.0 的 IIS 版本的机器上执行上述代码将导致该CommitChanges()方法引发异常,因为sslFlags这些版本中不存在。

警告:在现有绑定上启用 SNI 可能会导致其证书被取消选择!

另请参阅设置服务器名称指示 (SNI) 取消证书绑定

为避免此问题,您可以执行以下操作:

var cert = mySslBinding.CertificateHash;
mySslBinding.SetAttributeValue("SslFlags", Convert.ToInt32(1));
mySslBinding.CertificateHash = cert;
于 2015-03-19T08:19:06.203 回答