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

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