以编程方式在IIS 8上使用SNI选项添加绑定

时间:2013-12-09 11:16:10

标签: .net iis-8 sni servermanager

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

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

我一直在研究Binding类,我找不到任何标记或选项来表明它。

目前的Microsoft.Web.Administration v 7.0.0.0是否可以实现? 我需要一个我没找到的新版本吗?

我知道版本7.9.0.0仅适用于IIS Express,而不是我的场景,所以我没有调查过。

2 个答案:

答案 0 :(得分:8)

我终于设法使用文件夹Microsoft.Web.Administration中的%windir%\system32\inetsrv\仅在Windows 8 / Windows 2012 中使用 IIS 8

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

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

答案 1 :(得分: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));

    serverManager.CommitChanges();
}

请注意,在任何版本的IIS早于8.0的计算机上执行上述代码会导致CommitChanges()方法抛出异常,因为sslFlags在这些版本中不存在。