2013-12-09 7 views
4

Я пытаюсь создать привязки для IIS 8, которые имеют флаг SNI checked (указатель имени сервера), используя библиотеку Microsoft.Web.Administration (.NET Framework).Программно добавить привязку к IIS 8 с опцией SNI

Это необходимо для меня, потому что я хочу получить несколько привязок SSL для одного и того же веб-сайта в IIS, используя только один IP-адрес. Это одна из основных новых возможностей IIS 8.

Я изучал класс Binding и не могу найти какой-либо флаг или параметр для его указания.

Возможно ли с текущего Microsoft.Web.Administration v 7.0.0.0? Мне нужна новая версия, которую я не нашел?

Я знаю, что версия 7.9.0.0 предназначена только для IIS express, и это не мой сценарий, поэтому я не изучил его.

+0

Дополнительные технические данные за сценой можно найти в https://blog.lextudio.com/2015/05/whats-microsoft-web-administration-and-the-horr-facts-you-should-know/ Нет независимо от того, какой источник вы используете для приобретения сборки MWA в самом начале, вы должны придерживаться копии, поставляемой с IIS (как вы, наконец, обнаружили). –

ответ

8

мне наконец удалось сделать это с помощью Microsoft.Web.Administration из папки %windir%\system32\inetsrv\ но только в Windows 8/Windows 2012 с IIS 8.

Эти библиотеки имели опцию SslFlags в функции Add для класса BindingCollection. Нет документации от Microsoft, но для этой новой перегрузки, или, по крайней мере, я ее не нашел.

SslFlags.Sni можно использовать в этом и создает привязку с проверкой SNI.

+0

Для этого сейчас существует пакет NuGet (для сообщества сообщества): https://www.nuget.org/packages/IIS.Microsoft.Web.Adminstration/. Не знаю, почему MS не обновляет его. – Mrchief

+0

@Mrchief, никогда не используйте пакет NuGet. Ваше приложение всегда должно ссылаться на версию, установленную на компьютере под системным32 \ inetsrv, и никогда не копировать ее локально. –

+0

@LexLi К сожалению, _practice_ медленно устаревает. Пакеты NuGet и локальная копия (bin deployables) - это путь вперед! – Mrchief

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 не существует в этих версиях.

+2

Выполнение этого способа _may_ вызывает дополнительные проблемы: http://stackoverflow.com/questions/30536005/установки-имя-сервера-индикации-SNI-берет-офф-сертификат-связывающий – Mrchief