SSL-сертификат ACME на Windows Server IIS через win-acme
ПечатьНа Windows-VPS или сервере с IIS бесплатный клиент win-acme одной командой получает сертификат Sectigo по Вашей подписке ACME, добавляет сайту HTTPS-привязку и создаёт задание планировщика для продления. Ниже описано, что подготовить в IIS, какую команду выполнить и как проверить продление.
Что понадобится
- Доступ администратора к серверу через Remote Desktop.
- IIS, в котором сайт уже работает по HTTP.
- HTTP-привязка на порту 80 с заполненным Host name для каждого имени, которое должно попасть в сертификат (например
example.comиwww.example.com). win-acme берёт имена именно из привязок; привязки с пустым именем узла недостаточно. - DNS-записи домена указывают на сервер, а порты 80 и 443 разрешены в брандмауэре Защитника Windows.
- Server URL, EAB MAC ID и EAB MAC Key из услуги Sectigo ACME Certificate-as-a-Service.
Шаг 1. Проверьте привязки в IIS
- Откройте Internet Information Services (IIS) Manager: через меню Tools в Server Manager или командой
inetmgr. - В панели Connections разверните сервер, затем Sites, и выберите сайт.
- Нажмите Bindings в панели Actions.
- Убедитесь, что для каждого имени есть привязка
httpна порту 80. Если какой-то нет, нажмите Add, выберите Type http, Port 80, введите имя в Host name и подтвердите.
Шаг 2. Скачайте win-acme
- Скачайте последнюю версию для своей системы (обычно x64) с официального сайта www.win-acme.com.
- Перед распаковкой щёлкните ZIP-файл правой кнопкой, откройте Properties и отметьте Unblock, если Windows показывает этот пункт; иначе система может не дать запустить программу.
- Распакуйте архив в постоянную папку, например
C:\Program Files\win-acme. Не оставляйте его в «Загрузках»: задание продления запускает программу именно из этой папки.
Шаг 3. Выпустите и установите сертификат
Откройте Windows PowerShell от имени администратора и выполните команду ниже со своими значениями. В PowerShell строка продолжается на следующей, если заканчивается обратным апострофом (`); можно также записать всё в одну строку.
& "C:\Program Files\win-acme\wacs.exe" `
--source iis --host example.com,www.example.com `
--baseuri https://acme.sectigo.com/v2/DV `
--eab-key-identifier YOUR_EAB_MAC_ID --eab-key YOUR_EAB_MAC_KEY `
--emailaddress admin@example.com --accepttos `
--store certificatestore --installation iis
| Параметр | Что делает |
|---|---|
--source iis | Берёт имена из привязок IIS (в версиях до 2.2 параметр называется --target) |
--host | Имена для сертификата через запятую, без пробелов |
--baseuri | ACME-сервер Sectigo (Server URL из личного кабинета) |
--eab-key-identifier, --eab-key | EAB MAC ID и EAB MAC Key |
--emailaddress, --accepttos | Контактный адрес ACME-аккаунта и согласие с условиями |
--store certificatestore | Сохраняет сертификат в хранилище сертификатов Windows |
--installation iis | Создаёт или обновляет HTTPS-привязку на порту 443 |
win-acme проверяет домен по HTTP, устанавливает сертификат и при первом запуске создаёт в Task Scheduler задание для продления. Если что-то не получилось, выполните ту же команду, добавив --verbose, чтобы подробно увидеть каждый шаг.
Шаг 4. Убедитесь в результате
- Откройте
https://example.comв браузере и проверьте сертификат, нажав на замок: издатель, имена и дата окончания. - В IIS Manager снова откройте Bindings для сайта: теперь там должна быть привязка
httpsна порту 443 с выбранным новым сертификатом. - В Task Scheduler найдите задание, название которого начинается с
win-acme renew. Оно запускается ежедневно и продлевает сертификат, когда подходит срок.
Шаг 5. Проверьте и протестируйте продление
win-acme хранит продления отдельно для каждого ACME-сервера, поэтому всегда указывайте тот же --baseuri, что и при выпуске:
& "C:\Program Files\win-acme\wacs.exe" --list --baseuri https://acme.sectigo.com/v2/DV
& "C:\Program Files\win-acme\wacs.exe" --renew --force --baseuri https://acme.sectigo.com/v2/DV
Первая команда показывает зарегистрированные продления и дату следующего. Вторая сразу запускает принудительное продление; используйте её один раз для проверки, а не регулярно. Без --baseuri win-acme смотрит на свой сервер по умолчанию и выводит пустой список, и кажется, будто продление пропало.
Частые проблемы
- Привязки не найдены или имя (host) не найдено. У сайта нет HTTP-привязки с этим именем узла. Добавьте её, как в шаге 1.
- Проверка завершается по таймауту. Порт 80 закрыт в брандмауэре Защитника Windows или другом файрволе, либо DNS ещё указывает на другой сервер.
- Ошибки unauthorized или ошибки аккаунта. EAB MAC ID или EAB MAC Key скопированы не полностью, либо запрошенного имени нет в списке доменов подписки.
- На сервере с несколькими сайтами браузер показывает чужой сертификат. Проверьте, что у каждой HTTPS-привязки заполнено имя узла и отмечен пункт Require Server Name Indication.
- Продление не происходит. Задание удалено или отключено, либо папку win-acme перенесли после установки. Выполните команду из шага 3 ещё раз из постоянной папки.
Подробные журналы win-acme пишет в C:\ProgramData\win-acme. Если нужна помощь, откройте тикет и приложите нужную часть журнала, без EAB MAC Key.