Назад | Перейти на главную страницу

Можно ли использовать отображение подстановочных знаков в IIS7

Я хотел бы указать пользователя test1.domain.com test2.domain.com и т.д., не добавляя вручную привязку заголовка в IIS7. Это возможно? Если не автоматически, могу ли я программно добавить заголовок хоста?

Да, ты можешь.

Можно использовать подстановочный SSL-сертификат и один IP-адрес.

Я могу подробно описать, как это проверить, используя самозаверяющий шаблон.

Предпосылки

  • MakeCert.exe (который должен быть частью установки Visual Studio или скачать здесь)
  • winhttpcertcfg.exe (скачать здесь)
  • APPCMD (часть Vista / Server 2008 / Windows 7)
  • Оснастка «Сертификаты» для персонального и локального компьютера с использованием MMC

Метод

Выполните следующую команду из командной строки

makecert -r -pe -n CN=*.domain.com -ss my -sr currentuser -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 wildcard.domain.cer

затем

  • В команде RUN или в меню "Пуск" введите MMC.
  • Файл> Добавить или удалить оснастки - выберите «Сертификаты», нажмите «Добавить», выберите «Моя учетная запись пользователя», нажмите «Готово».
  • Повторите предыдущий шаг и выберите Мой компьютер (затем выберите Локальный компьютер)
  • Нажмите ОК
  • Разверните Сертификаты - Текущий пользователь> Личные> Сертификаты.
  • Щелкните правой кнопкой мыши * .domain.com и выберите Все задачи> Экспорт. PFX-файл содержит как открытый, так и закрытый ключ для этого сертификата, поэтому вы запросили пароль.
  • Скопируйте или переместите сертификат из текущего пользователя> Личные> Сертификаты на локальный компьютер> Доверенные корневые центры сертификации> Сертификаты
  • Импортируйте PFX в Локальный компьютер> Личные> Сертификаты (это будет сертификат, используемый вашими веб-службами.

Теперь давайте создадим ваши веб-серверы

  • Приведите в порядок свое окружение :)

Удалите существующие пулы демонстрационных приложений и сайты

%windir%\system32\inetsrv\Appcmd delete site "Demo 1"
%windir%\system32\inetsrv\Appcmd delete site "Demo 2"
%windir%\system32\inetsrv\Appcmd delete AppPool "Demo 1 App Pool"
%windir%\system32\inetsrv\Appcmd delete AppPool "Demo 2 Portal App Pool"
  • Установите среду SSL

Сообщите Windows, что сетевой службе разрешен доступ к вашему сертификату с подстановочными знаками. и скажите ему привязать сертификат к порту 443 на вашем IP-адресе

PathToWinHTTPCertCfg\winhttpcertcfg -g -i "wildcard.domain.com.pfx" -c LOCAL_MACHINE\My -a “Network Service” -p MySecretPassword
 netsh http add sslcert ipport=<YOURLOCALIPADDRESS>:443 certhash=<CERTIFICATE THUMBPRINT> appid=<A GUID IN THE FORM OF {ab3c58f7-8316-42e3-bc6e-771d4ce4b201}>
  • Создание пулов приложений и сайтов

Это код для создания пулов приложений и сайтов.

%windir%\system32\inetsrv\Appcmd add site -id:100 -name:"Demo 1" -bindings:http/*:80:YOURLOCALIPADDRESS -physicalPath:<PathToDemo1Source> -logfile.directory:<PathToPutLogFilesIn> -traceFailedRequestsLogging.directory:<PathToPutTraceFiles>
%windir%\system32\inetsrv\Appcmd set app "Demo 1/" -applicationPool:"Demo 1 App Pool"
%windir%\system32\inetsrv\Appcmd set site /site.name:"Demo 1" /+bindings.[protocol='https',bindingInformation='*:443:demo1.domain.com']

%windir%\system32\inetsrv\Appcmd add site -id:200 -name:"Demo 2" -bindings:http/*:80:YOURLOCALIPADDRESS -physicalPath:<PathToDemo2Source> -logfile.directory:<PathToPutLogFilesIn> -traceFailedRequestsLogging.directory:<PathToPutTraceFiles>
%windir%\system32\inetsrv\Appcmd set app "Demo 2/" -applicationPool:"Demo 2 App Pool"
%windir%\system32\inetsrv\Appcmd set site /site.name:"Demo 2" /+bindings.[protocol='https',bindingInformation='*:443:demo2.domain.com']

... и это должны быть вы;) Наслаждайтесь!

Насколько я знаю, есть только два варианта, когда дело доходит до заголовков хоста в IIS7.

  1. Вы устанавливаете заголовок / тип / порт / IP-адрес хоста для каждого домена, который хотите, чтобы он обрабатывал.
  2. Вы не устанавливаете заголовок хоста, но включаете тип / порт / IP-адрес сайта, который вы хотите обрабатывать для нескольких доменов.

Уловка с вариантом №2 заключается в том, что он будет отвечать на любой запрос на этом порту, и вы не сможете использовать тот же порт на другом сайте без заголовка хоста.

Может быть фильтр ISAPI, который вы можете загрузить на уровне сервера, чтобы перехватить запрос, прежде чем он попадет в часть обработки заголовка хоста, но может быть проще настроить сценарий для обработки варианта №1.

Настроив запись DNS с подстановочными знаками, вы можете иметь столько имен, сколько хотите, для перехода на свой веб-сайт по умолчанию. После того, как пользователь перейдет на этот веб-сайт, если вам нужно перенаправить его на другой сайт, пусть ваш файл default.asp ищет заголовок HOST, чтобы определить, нужно ли ему перенаправить, в противном случае загрузите остальную часть сайта.

Ссылки:

Заголовки хоста с подстановочными знаками с IIS7

Список заголовков HTTP

Я не очень хорошо разбираюсь в веб-разработке, но это должно, по крайней мере, помочь вам начать.