win-acme выпускает бесплатный SSL-сертификат Let's Encrypt на Windows и сам продлевает его. Сертификат и ключ указываются в службе web-service. На Linux ту же задачу решает Certbot.
test на домене club-is.ru (у клуба будут свой домен и хост с другим названием).wacs.exe проверку не пропустит.C:\win-acme.win-acme.v2…x64.trimmed.zip. Для 32-битной системы — такой же архив с x86 вместо x64.C:\win-acme. Папка должна остаться на месте: ежедневное задание продления запускает wacs.exe из неё. В эту же папку программа положит сертификат и ключ.Если служба web-service слушает порт 80, остановите её. Иначе проверка домена не сможет занять этот порт. Запустите «Командную строку» от имени администратора и выполните:
net stop "ClubIS Fitness WEB service"
В той же командной строке выпустите сертификат. Замените test.club-is.ru на ваше имя хоста, а admin@test.club-is.ru — на почту администратора домена (туда приходят уведомления об окончании срока действия сертификата):
cd /d C:\win-acme
wacs.exe --source manual --host test.club-is.ru --validation selfhosting --csr rsa --store pemfiles --pemfilespath C:\win-acme --accepttos --emailaddress admin@test.club-is.ru
Ключ должен быть RSA: служба web-service читает именно такой ключ. Пароль на файл ключа не задавайте — служба открывает его без пароля.
В «Настройке служб» на вкладке web-service включите «Принимать входящие соединения HTTPS» и укажите файлы (имя хоста в пути — ваше):
Сертификат:
C:\win-acme\test.club-is.ru-chain.pem
Ключ:
C:\win-acme\test.club-is.ru-key.pem
В поле «Сертификат» нужен файл *-chain.pem: в нём сам сертификат и промежуточные. Файл *-crt.pem содержит только сертификат сайта, для службы он не подходит.
Запустите или перезапустите службу web-service.
После первого успешного выпуска win-acme сам создаёт ежедневное задание в «Планировщике заданий» Windows. Оно запускается от имени системы около 9:00 и продлевает сертификат, когда до окончания срока остаётся около 55 дней. Отдельное задание, как для Certbot, добавлять не нужно.
Служба читает сертификат только при запуске. На время продления её нужно остановить (чтобы освободить порт 80) и затем снова запустить, чтобы она подхватила новые файлы. На эти минуты служба будет остановлена.
Создайте в C:\win-acme два файла.
C:\win-acme\stop-web-service.cmd:
net stop "ClubIS Fitness WEB service"
C:\win-acme\start-web-service.cmd:
net start "ClubIS Fitness WEB service"
Откройте блокнотом от имени администратора файл C:\win-acme\settings.json (он появляется после первого запуска wacs.exe). Найдите раздел Execution и замените в нём null на пути к скриптам. Обратные слэши в JSON пишутся дважды:
"Execution": {
"DefaultPreExecutionScript": "C:\\win-acme\\stop-web-service.cmd",
"DefaultPostExecutionScript": "C:\\win-acme\\start-web-service.cmd"
}
Второй раздел Execution добавлять не нужно: правьте тот, который уже есть в файле. Эти скрипты общие для всех сертификатов win-acme на этом компьютере.
Проверьте файл: снова запустите wacs.exe от имени администратора. Должно открыться меню программы. Сообщение об ошибке в settings.json означает, что файл сохранился с опечаткой: проверьте кавычки и запятые в разделе Execution.
Один раз проверьте продление. Служба на это время остановится и должна снова запуститься. Команда выпускает новый сертификат, поэтому повторять её подряд не стоит:
cd /d C:\win-acme
wacs.exe --renew --force
Если команда закончилась ошибкой и служба осталась остановленной, запустите её вручную:
net start "ClubIS Fitness WEB service"
Журнал программы лежит в %programdata%\win-acme\.