
Установка 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