*КУБ — полный комплекс облачных услуг!

Windows VPS: установка и настройка IIS

Windows VPS
Windows VPS: установка и настройка IIS

Установка IIS без лишнего

Через Server Manager: «Добавление ролей и компонентов» → «На основе ролей» → ваш сервер → «Веб-сервер (IIS)».

Выберите минимум для статического контента и базовых сайтов:

  • Web Server → Common HTTP Features: Static Content, Default Document, HTTP Errors;
  • «Проверка работоспособности и диагностика»: «Ведение журнала HTTP»;
  • «Безопасность»: «Фильтрация запросов»;
  • Производительность: Сжатие статического контента.

Если требуются ASP.NET — добавьте Application Development (.NET Extensibility, ASP.NET, ISAPI).

Эквивалент PowerShell:

Install-WindowsFeature Web-Server, Web-Common-Http, Web-Default-Doc, Web-Http-Errors, `
  Web-Http-Logging, Web-Filtering, Web-Stat-Compression -IncludeManagementTools
# При необходимости:
# Install-WindowsFeature Web-Asp-Net45, Web-Net-Ext45, Web-ISAPI-Ext, Web-ISAPI-Filter

Проверьте http://localhost — должна отобразиться стартовая страница IIS.

Генерируем CSR (запрос на сертификат) непосредственно в IIS

Откройте IIS Manager (InetMgr.exe) → выберите ваш сервер → Server Certificates (сертификаты сервера).

Генеруємо CSR

В разделе «Actions» нажмите «Create Certificate Request…», заполните поля «Distinguished Name»:

Common Name — FQDN сайта (например, example.ru или *.example.ru для wildcard);

— Organization/OU/City/State/Country — в соответствии с требованиями центра сертификации (CA).

Distinguished Name

Выберите криптопровайдер и длину ключа (рекомендуется Microsoft RSA SChannel и 2048 бит).

криптопровайдер

Сохраните CSR в файл — он начинается с —–BEGIN NEW CERTIFICATE REQUEST—–.

Збережіть CSR у файл

Отправьте CSR в ваш CA (коммерческий или корпоративный). Если вы используете AD CS — загрузите выданный сертификат с веб-портала CA.

Надішліть CSR

Альтернатива для тестов: самоподписанный сертификат через PowerShell New-SelfSignedCertificate. Подходит для тестовых сред, но не для производственного сайта.

Импорт сертификата в IIS (CER/PFX) и нюансы форматов

Вернитесь в раздел «Сертификаты сервера» и нажмите «Завершить запрос на сертификат…» — укажите выданный CER.

Імпорт сертифіката в IIS

Если у вас CRT KEY, сначала преобразуйте его в PFX (объединенный контейнер с закрытым ключом). Самый простой способ — openssl:

openssl pkcs12 -export -out target.pfx -inkey source.key -in source.crt

Или временно преобразуйте CRT → CER (Base-64 X.509) непосредственно в Windows через «Export»:

перетворіть CRT → CER

Если импортируете PFX, лучше через панель инструментов «Certificates (Local Computer)» → «Personal». Microsoft подробно описывает импорт и назначение сертификата сайту в официальной инструкции.

После нажатия «Complete Certificate Request» новый сертификат появится в списке:

Complete Certificate Request

Привязываем HTTPS к сайту (Bindings)

Перейдите в «Sites», выберите сайт → «Edit Bindings»…

Прив’язуємо HTTPS

Добавьте привязку:

  • Тип: https
  • IP-адреса: Все неназначенные (или конкретный)
  • Порт: 443
  • Имя хоста: FQDN вашего сайта
  • SSL-сертификат: выберите импортированный сертификат

Для нескольких HTTPS-сайтов на одном IP включите SNI (Require Server Name Indication).

увімкніть SNI

Перезапустите сайт (или весь IIS).

Перезапустіть сайт

Проверьте в браузере: замок и действительный сертификат на домен.

Перевірте в браузері

Полезно сразу включить перенаправление HTTP → HTTPS (URL Rewrite) — на winitpro есть отдельная статья по этому вопросу.

Открываем порты и тестируем извне

Не забудьте открыть порты 80/443 во внутреннем брандмауэре Windows и внешнем брандмауэре/ACL у провайдера Windows VPS:

New-NetFirewallRule -DisplayName "HTTP (80)"  -Direction Inbound -Protocol TCP -LocalPort 80  -Action Allow
New-NetFirewallRule -DisplayName "HTTPS (443)" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow

Проверка с клиентской машины:

Test-NetConnection example.ru -Port 80
Test-NetConnection example.ru -Port 443

TcpTestSucceeded : True — привязка и доступность подтверждены.

Типичные ошибки и быстрые решения

  • Сертификат не отображается в раскрывающемся списке Bindings — импортирован в Current User вместо Local Computer → Personal, либо без закрытого ключа. Импортируйте PFX в Local Computer.
  • NET::ERR_CERT_COMMON_NAME_INVALID — CN/SAN не совпадает с доменом в поле Host name; переиздайте сертификат на правильный FQDN.
  • Открывается только HTTP — отсутствует HTTPS-привязка или порт 443 заблокирован на внешнем брандмауэре.
  • Ошибка при импорте CRT — конвертируйте в CER или PFX (см. выше).
  • Несколько сайтов на одном IP — включите SNI в привязке и используйте разные Host name.

Памятка: IIS сайт HTTPS за пару минут

# 1) Установка IIS с базовыми модулями
Install-WindowsFeature Web-Server, Web-Common-Http, Web-Default-Doc, Web-Http-Errors, `
  Web-Http-Logging, Web-Filtering, Web-Stat-Compression -IncludeManagementTools

# 2) Каталог сайта
New-Item -ItemType Directory -Path "D:\sites\example.ru\wwwroot" -Force | Out-Null

# 3) Сайт на HTTP
Import-Module WebAdministration
New-Website -Name "example.ru" -Port 80 -PhysicalPath "D:\sites\example.ru\wwwroot" -IPAddress "*" -HostHeader "example.ru"

# 4) Импорт сертификата (пример для PFX; укажите свой путь/пароль)
# $pwd = ConvertTo-SecureString "PFXpassword" -AsPlainText -Force
# Import-PfxCertificate -FilePath "C:\certs\example.pfx" -CertStoreLocation Cert:\LocalMachine\My -Password $pwd
# $thumb = (Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -like "*CN=example.ru*"}).Thumbprint

# 5) Привязка к HTTPS (через netsh http)
# New-WebBinding -Name "example.ru" -Protocol https -Port 443 -HostHeader "example.ru"
# netsh http add sslcert hostnameport=example.ru:443 certhash=$thumb appid="{00112233-4455-6677-8899-AABBCCDDEEFF}"

# 6) Брандмауэр
New-NetFirewallRule -DisplayName "HTTP (80)"  -Direction Inbound -Protocol TCP -LocalPort 80  -Action Allow
New-NetFirewallRule -DisplayName "HTTPS (443)" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow

Menu