Microsoft IIS (Internet Information Services) использует формат PFX для SSL-сертификатов — отличный от PEM-файлов, которые создают GetHTTPS и большинство инструментов на базе Linux. Это руководство описывает конвертацию сертификата и его установку на IIS 10.
Предварительные требования
- Windows Server с установленным IIS 10
- Файлы сертификата от GetHTTPS:
cert.pem,privkey.pem,chain.pem - OpenSSL установлен (поставляется с Git for Windows или устанавливается отдельно)
Шаг 1: Конвертация PEM в PFX
IIS не может напрямую читать PEM-файлы. Конвертируйте в формат PFX с помощью OpenSSL:
openssl pkcs12 -export -out certificate.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem
Вам будет предложено задать пароль экспорта — запомните его для этапа импорта.
Нет OpenSSL? Если у вас установлен Git for Windows, OpenSSL находится по пути
C:\Program Files\Git\usr\bin\openssl.exe. Или скачайте его с slproweb.com/products/Win32OpenSSL.html.
Подробнее о форматах сертификатов: Объяснение PEM, PFX, DER
Шаг 2: Импорт PFX в IIS
- Откройте Диспетчер служб IIS (выполните
inetmgr) - Нажмите на имя сервера в левой панели
- Дважды щёлкните Сертификаты сервера в центральной панели
- Нажмите Импорт… в правой панели действий
- Укажите путь к файлу
certificate.pfx - Введите пароль экспорта, заданный на шаге 1
- Выберите хранилище сертификатов: Web Hosting (или Личное)
- Нажмите ОК
Сертификат теперь отображается в списке сертификатов сервера.
Шаг 3: Привязка HTTPS к сайту
- В диспетчере IIS разверните Сайты в левой панели
- Щёлкните правой кнопкой мыши на сайте → Изменить привязки…
- Нажмите Добавить…
- Установите:
- Тип: https
- Порт: 443
- Имя узла:
yourdomain.com(оставьте пустым для всех имён узлов) - SSL-сертификат: выберите только что импортированный сертификат
- Нажмите ОК
- Повторите для
www.yourdomain.com, если необходимо
Шаг 4: Перенаправление HTTP на HTTPS
Установите модуль URL Rewrite (если ещё не установлен), затем добавьте в web.config вашего сайта:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Шаг 5: Проверка
Откройте https://yourdomain.com в браузере. Нажмите на значок замка, чтобы проверить данные сертификата.
Проверка через PowerShell:
# Проверка сертификата, привязанного к порту 443
netsh http show sslcert
Устранение неполадок
”A specified logon session does not exist”
Закрытый ключ не был правильно импортирован. Повторно экспортируйте PFX-файл с помощью:
openssl pkcs12 -export -out certificate.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem -passout pass:YourPassword
Убедитесь, что PFX был создан из соответствующих друг другу файлов ключа и сертификата.
Сертификат не отображается в выпадающем списке привязки
Импорт мог завершиться неудачно без уведомления. Проверьте Просмотр событий → Журналы Windows → Приложение на наличие ошибок. Убедитесь, что пароль PFX правильный и файл не повреждён.
”This site is not secure” после привязки
Проверьте, что цепочка сертификатов полная. Файл chain.pem должен быть включён в конвертацию PFX (-certfile chain.pem). Без него браузеры не могут проверить цепочку доверия.
Часто задаваемые вопросы
Можно ли использовать сертификат Let’s Encrypt с IIS?
Да. Сертификаты Let’s Encrypt работают с любым сервером, включая IIS. Единственный дополнительный шаг — конвертация PEM в формат PFX. GetHTTPS выдаёт PEM-файлы; приведённая выше команда OpenSSL конвертирует их.
Есть ли инструмент вроде Certbot для IIS?
win-acme (ранее letsencrypt-win-simple) — самый популярный ACME-клиент для Windows/IIS. Он обрабатывает выпуск сертификата, конвертацию в PFX, привязку к IIS и автоматическое обновление в одном инструменте. Используйте его, если хотите полностью автоматизированный Let’s Encrypt на IIS.
Как обновить сертификат на IIS?
- Получите новый сертификат на GetHTTPS
- Конвертируйте в PFX:
openssl pkcs12 -export -out new.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem - Импортируйте новый PFX в Диспетчере IIS → Сертификаты сервера
- Обновите привязку сайта для использования нового сертификата
- Удалите старый сертификат из раздела сертификатов сервера
Для автоматического обновления рассмотрите win-acme — он обрабатывает весь цикл автоматически.
Поддерживает ли IIS сертификаты ECDSA/ECC?
IIS 10 на Windows Server 2016+ поддерживает сертификаты ECDSA. GetHTTPS по умолчанию генерирует ECDSA P-256, который работает с современным IIS. Старые версии IIS (8.5 и ниже) могут требовать RSA-сертификаты.
Можно ли использовать IIS с несколькими сайтами на одном IP?
Да. IIS 8+ поддерживает SNI (Server Name Indication), что позволяет использовать несколько SSL-сертификатов на одном IP-адресе. При добавлении HTTPS-привязки отметьте “Require Server Name Indication” и введите имя узла. Каждый сайт может иметь собственный сертификат.
Как найти OpenSSL в Windows?
OpenSSL не включён в Windows по умолчанию. Распространённые источники:
- Git for Windows включает его по пути
C:\Program Files\Git\usr\bin\openssl.exe - Chocolatey:
choco install openssl - Сборки Win32/Win64: скачайте с slproweb.com
После установки добавьте его в PATH или используйте полный путь в командах.