Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Vaidy Gopalakrishnan
Обзор
Служба IIS Express была разработана, чтобы обеспечить выполнение наиболее распространенных задач веб-разработки и тестирования без прав администратора. Например, вы можете запустить веб-сайт локально с помощью не зарезервированного порта. Вы также можете протестировать веб-сайт с помощью SSL-сертификата и порта в диапазоне от 44300 до 44399. Дополнительные сведения см. в статье "Запуск IIS Express без Администратор istrative Privileges".
Однако иногда может потребоваться использовать IIS Express для тестирования сценариев, которые не включены по умолчанию. Например, хотя IIS Express не предназначен для рабочего веб-сервера, например IIS, может потребоваться проверить внешний доступ к веб-сайту. Аналогичным образом вы можете протестировать сайт с помощью SSL или использовать определенный зарезервированный номер порта.
По умолчанию при тестировании этих сценариев служба IIS Express сообщает о сбое привязки URL-адресов. Это происходит, так как служба IIS Express не имеет достаточных привилегий для выполнения этих типов задач. Вы можете запустить IIS Express от имени администратора, чтобы обойти эти ограничения, но это не рекомендуется по соображениям безопасности.
Правильный подход к тестированию с помощью IIS Express в этих сценариях заключается в настройке HTTP.sys для разрешения IIS Express, работающего в стандартных разрешениях для выполнения задач. После завершения тестирования можно отменить изменения конфигурацию. По соображениям безопасности эти задачи ограничены администраторами и не могут выполняться стандартными (неадминистраторными) пользователями.
О HTTP.sys
HTTP.sys — это компонент операционной системы, который обрабатывает трафик HTTP и SSL для IIS и IIS Express. По умолчанию HTTP.sys запрещает приложениям (включая IIS Express) выполнять следующие операции, если приложение выполняется стандартным пользователем:
- Использование зарезервированных портов, таких как 80 или 443
- Обслуживание внешнего трафика
- Использование протокола SSL
Вы можете настроить HTTP.sys, чтобы разрешить эти операции для IIS Express. В Windows 7 и Windows Vista можно настроить HTTP.sys с помощью программы netsh.exe . В Windows XP HTTP.sys можно настроить с помощью программы командной строки httpcfg.exe , которая входит в состав средств поддержки Windows XP с пакетом обновления 2 (SP2).
Использование зарезервированного порта
По умолчанию можно использовать IIS Express для запуска веб-сайта с помощью не зарезервированного порта, например 8080. Однако использование зарезервированного порта, например 80 или 443, требует работы. Описанные ниже действия предполагают, что вы хотите поддерживать локальный трафик через порт 80.
В Windows 7 или Windows Vista в командной строке с повышенными привилегиями выполните следующую команду:
netsh http add urlacl url=http://localhost:80/ user=everyone
Эта команда позволит любому приложению пользователя (включая собственные экземпляры IIS Express) выполняться с помощью порта 80 без необходимости прав администратора. Чтобы ограничить доступ к себе, замените "все" вашим удостоверением Windows.
В Windows XP необходимо выполнить следующую команду из командной строки с повышенными привилегиями:
httpcfg set urlacl /u http://localhost:80/ /a D:(A;;GX;;;WD)
После настройки HTTP.sys веб-сайт можно настроить для использования порта 80. Это очень просто с помощью таких средств, как WebMatrix и Visual Studio 2010 с пакетом обновления 1 (SP1). Вы также можете вручную изменить файл applicationhost.config , чтобы включить следующую привязку в элемент sites.
<binding protocol="http" bindingInformation="*:80:localhost"/>
Теперь веб-сайт будет работать (локально) с помощью порта 80.
После тестирования приложения необходимо отменить изменения HTTP.sys к более ранним параметрам.
В Windows 7 или Windows Vista выполните следующую команду из командной строки с повышенными привилегиями:
netsh http delete urlacl url=http://localhost:80/
В Windows XP выполните следующую команду из командной строки с повышенными привилегиями:
httpcfg delete urlacl /u http://localhost:80/
Обслуживание внешнего трафика
Чтобы веб-сайт мог обслуживать внешний трафик, необходимо настроить HTTP.sys и брандмауэр компьютера. Описанные ниже действия предполагают, что внешний трафик будет обслуживаться через порт 8080.
Действия по настройке HTTP.sys внешнего трафика похожи на настройку сайта для использования зарезервированного порта. В Windows 7 или Windows Vista в командной строке с повышенными привилегиями выполните следующую команду:
netsh http add urlacl url=http://myhostname:8080/ user=everyone
В Windows XP выполните следующую команду из командной строки с повышенными привилегиями:
httpcfg set urlacl /u http://myhostname:8080/ /a D:(A;;GX;;;WD)
После настройки HTTP.sys можно настроить службу IIS Express для использования порта 80 с помощью WebMatrix или Visual Studio 2010 с пакетом обновления 1 (SP1) или изменить файл конфигурации applicationhost.config , чтобы включить следующую привязку в элемент сайтов. (Замените myhostname доменным именем компьютера).
<binding protocol="http" bindingInformation="*:8080:myhostname"/>
Кроме того, необходимо настроить брандмауэр, чтобы разрешить внешний трафик передаваться через порт 8080. Действия зависят от используемого брандмауэра и не описаны здесь.
После тестирования приложения отменить изменения HTTP.sys к более ранним параметрам.
В Windows 7 или Windows Vista выполните следующую команду из командной строки с повышенными привилегиями:
netsh http delete urlacl url=http://myhostname:8080/
В Windows XP выполните следующую команду из командной строки с повышенными привилегиями:
httpcfg delete urlacl /u http://myhostname:8080/
Использование пользовательского SSL-порта
Если вы хотите проверить ssl-доступ к сайту, это можно сделать с помощью IIS Express с помощью SSL-порта от 44300 до 44399 и с помощью самозаверяющего сертификата IIS Express. Попытка использовать SSL с портом за пределами этого диапазона приводит к сбою привязки URL-адресов при запуске веб-сайта в IIS Express.
Общие инструкции по настройке HTTP.sys для поддержки SSL см. в статье "Практическое руководство. Настройка порта с помощью SSL-сертификата". Например, представьте, что вы хотите протестировать веб-сайт с помощью URL-адреса https://localhost:443
.
Сначала определите отпечаток SHA1 для самозаверяющего сертификата IIS Express. Этот отпечаток отличается для каждого компьютера, так как программа установки IIS Express создает новый сертификат при выполнении. Вы можете определить отпечаток SHA1 с помощью оснастки сертификата консоли управления Майкрософт (MMC), просмотрев личное хранилище сертификатов компьютера. Кроме того, можно использовать программу .NET CertMgr.exe , как показано ниже. В командной строке выполните следующую команду.
certmgr.exe /c /s /r localMachine MY
Эта команда отображает сведения обо всех сертификатах в хранилище личных сертификатов для локального компьютера. Найдите самозаверяющий сертификат IIS Express Development Certificate в выходных данных, чтобы найти самозаверяющий сертификат IIS Express, а затем запишите отпечаток SHA1.
Затем настройте HTTP.sys, чтобы связать самозаверяющий сертификат с URL-адресом. В Windows 7 или Windows Vista начните с создания уникального UUID с помощью uuidgen.exe или другого средства. Затем выполните следующую команду из командной строки с повышенными привилегиями, передав отпечаток параметру certhash. (Исключите пробелы при указании отпечатка.)
netsh http add sslcert ipport=0.0.0.0:443 certhash=<thumbprint> appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Для параметра appid передайте уникальный UUID, созданный ранее.
В Windows XP выполните следующую команду из командной строки с повышенными привилегиями.
httpcfg set ssl -i 0.0.0.0:443 -h <thumbprint>
Так как 443 является зарезервированным портом, вам также потребуется настроить HTTP.sys, чтобы разрешить службам IIS Express использовать его во время работы в качестве стандартного пользователя. Дополнительные сведения см. в разделе "Использование зарезервированного порта". Этот шаг не потребуется выполнить, если вы используете не зарезервированный пользовательский SSL-порт, например 44500.
В Windows 7 или Windows Vista выполните следующую команду из командной строки с повышенными привилегиями.
netsh http add urlacl url=https://localhost:443/ user=everyone
В Windows XP выполните следующую команду из командной строки с повышенными привилегиями.
httpcfg set urlacl /u https://localhost:443/ /a D:(A;;GX;;;WD)
После настройки HTTP.sys настройте веб-сайт для использования пользовательского SSL-порта с помощью WebMatrix или Visual Studio 2010 с пакетом обновления 1 (SP1) или добавьте следующую привязку в элемент сайтов в файле конфигурации applicationhost.config .
<binding protocol="https" bindingInformation="*:443:localhost"/>
Когда вы закончите тестирование веб-сайта, отменить изменения HTTP.sys к более ранним параметрам. В Windows 7 или Windows Vista выполните следующие команды из командной строки с повышенными привилегиями:
netsh http delete sslcert ipport=0.0.0.0:443
netsh http delete urlacl url=https://localhost:443/
В Windows XP выполните следующие команды из командной строки с повышенными привилегиями:
httpcfg delete ssl –i 0.0.0.0:443
httpcfg delete urlacl /u https://localhost:443/
Использование пользовательского SSL-сертификата
Настройка пользовательского SSL-сертификата очень похожа на использование пользовательского SSL-порта. Действия, описанные в этом разделе, предполагают, что веб-сайт уже обслуживает локальный SSL-трафик с помощью порта 44300 и самозаверяющего сертификата IIS Express.
Сначала необходимо установить настраиваемый SSL-сертификат на компьютере. Используйте оснастку сертификата MMC или CertMgr.exe. При установке сертификата обратите внимание на значение отпечатка SHA1.
URL-адрес https://localhost:44300
предварительно настраивается программой IIS Express для использования самозаверяющего сертификата. Чтобы привязать этот URL-адрес к пользовательскому сертификату, необходимо удалить существующую связь. Пропустите этот шаг, если сочетание имени узла и порта не связано с SSL-сертификатом.
В Windows 7 или Windows Vista выполните следующую команду из командной строки с повышенными привилегиями:
netsh http delete sslcert ipport=0.0.0.0:44300
В Windows XP выполните следующую команду из командной строки с повышенными привилегиями:
httpcfg delete ssl –i 0.0.0.0:44300
Остальные шаги аналогичны настройке пользовательского SSL-порта. Создайте уникальный идентификатор UUID с помощью uuidgen.exe или другого средства.
В Windows 7 или Windows Vista выполните следующую команду из командной строки с повышенными привилегиями, передав отпечаток пользовательских сертификатов (сначала удалите все пробелы) в параметр certhash и передайте идентификатор UUID.
netsh http add sslcert ipport=0.0.0.0:44300 certhash=<thumbprint> appid={00112233-4455-6677-8899-AABBCCDDEEFF}
В Windows XP выполните следующую команду из командной строки с повышенными привилегиями.
httpcfg set ssl -i 0.0.0.0:44300 -h <thumbprint>
Итоги
В этой статье описаны шаги, необходимые для поддержки некоторых сценариев для IIS Express, которые не включены по умолчанию. Для выполнения их необходимо быть администратором. Даже если у вас нет прав администратора, вы по-прежнему можете выполнять наиболее распространенные задачи веб-проектирования и разработки с помощью IIS Express в качестве стандартного пользователя.