*КУБ - повний комплекс хмарних послуг!

Windows VPS: встановлення та налаштування IIS

Windows VPS: installing and configuring IIS

Встановлення IIS без зайвого

Через Server Manager: Add roles and features → Role-based → ваш сервер → Web Server (IIS).

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

  • Web Server → Common HTTP Features: Static Content, Default Document, HTTP Errors;
  • Health and Diagnostics: HTTP Logging;
  • Security: Request Filtering;
  • Performance: Static Content Compression.

Якщо потрібні 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 (сертифікати сервера). 

1 Windows VPS

У Actions натисніть Create Certificate Request…, заповніть поля Distinguished Name:

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

— Organization/OU/City/State/Country — за вимогами центру сертифікації (CA).

2 Windows VPS

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

3 Windows VPS

Збережіть CSR у файл — він починається з —–BEGIN NEW CERTIFICATE REQUEST—–.

4 Windows VPS

Надішліть CSR до вашого CA (комерційного або корпоративного). Якщо ви користуєтеся AD CS — завантажте виданий сертифікат з веб-порталу CA.

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

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

Поверніться в Server Certificates і натисніть Complete Certificate Request… — вкажіть виданий CER.

6 Windows VPS

Якщо у вас CRT + KEY, спочатку конвертуйте в PFX (об’єднаний контейнер з приватним ключем). Найпростіший спосіб — openssl:

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

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

Якщо імпортуєте PFX, краще через оснастку Certificates (Local Computer) → Personal. Microsoft детально розписує імпорт і призначення сертифіката сайту в офіційній інструкції.

Після Complete Certificate Request новий сертифікат з’явиться в списку:

9 Windows VPS

Прив’язуємо HTTPS до сайту (Bindings)

Перейдіть в Sites, виберіть сайт → Edit Bindings…

10 Windows VPS

Додайте прив’язку:

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

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

11 Windows VPS

Перезапустіть сайт (або весь IIS).

12 Windows VPS

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

13 Windows VPS

Корисно відразу включити перенаправлення 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