
Встановлення 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 (сертифікати сервера).

У Actions натисніть Create Certificate Request…, заповніть поля Distinguished Name:
— Common Name — FQDN сайту (наприклад, example.ru або *.example.ru для wildcard);
— Organization/OU/City/State/Country — за вимогами центру сертифікації (CA).

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

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

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

Альтернатива для тестів: самопідписаний сертифікат через PowerShell New-SelfSignedCertificate. Підходить для стендів, але не для бойового сайту.
Імпорт сертифіката в IIS (CER/PFX) і нюанси форматів
Поверніться в Server Certificates і натисніть Complete Certificate Request… — вкажіть виданий CER.

Якщо у вас 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 новий сертифікат з’явиться в списку:

Прив’язуємо HTTPS до сайту (Bindings)
Перейдіть в Sites, виберіть сайт → Edit Bindings…

Додайте прив’язку:
- Тип: https
- IP-адреса: Всі не призначені (або конкретна)
- Порт: 443
- Ім’я хоста: FQDN вашого сайту
- SSL-сертифікат: виберіть імпортований сертифікат
Для декількох HTTPS-сайтів на одному IP увімкніть SNI (Require Server Name Indication).

Перезапустіть сайт (або весь 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