Proxmox ACME с KeenDNS
Проблема
У меня есть хост Proxmox 8.3.0. Он слушает порт 80 под доменом 4 уровня в KeenDNS. Так как сам серт кинетика обновляется по ACME через 80 порт, то
при попытке автоматически обновить сертификат за 30 дней до окончания предыдущего Let's Encrypt (certificate renew) в логах возникает ошибка:
Loading ACME account details Placing ACME order Order URL: https://acme-v02.api.letsencrypt.org/acme/order/1973739627/328165911197 Getting authorization details from 'https://acme-v02.api.letsencrypt.org/acme/authz/XXXXXXXXXX/XXXXXXXXXXXX' The validation for pve.fonwa.keenetic.pro is pending! Setting up webserver Triggering validation Sleeping for 5 seconds TASK ERROR: validating challenge 'https://acme-v02.api.letsencrypt.org/acme/authz/XXXXXXXXXX/XXXXXXXXXXXX' failed - status: invalid
Очевидно, процесс обновления сертификата (клиент ACME) хочет поднять веб-сервер на порту 80, но не может этого сделать, так как порт отдан Keenetic.
Решение
Решением был бы запуск вебсервера клиента ACME на порту, отличном от 80. Например - 8080. Штатно в proxmox такой возможности нет. Но логика proxmox написана на perl, что позволяет быстро и безболезненно изменить ее.
Легко и непринужденно в дебрях библиотек находим файл /usr/share/perl5/PVE/ACME/StandAlone.pm, а в нем кусок кода:
my %sockopts = ( LocalPort => 80, ReuseAddr => 1, ); my $server = HTTP::Daemon->new( LocalHost => '::', V6Only => 0, %sockopts) //
И заменяем номер порта, например на 8080
А потом выполняем перезапуск сервисов proxmox:
service pve-cluster restart && service pvedaemon restart && service pvestatd restart && service pveproxy restart
Для ручного обновления сертификата выполняем:
pvenode acme cert renew
Для обновления серта, истекающего более чем за 30 дней, добавляем ключ:
-force
https://forum.proxmox.com/threads/no-configuration-is-done-letsencrypt-certificate.44065/
https://wiki.autosys.tk/proxmox/acme_change_challenge_request_port
https://help.keenetic.com/hc/ru/articles/360020977339-%D0%92-%D0%BA%D0%B0%D0%BA%D0%B8%D1%85-%D1%81%D0%BB%D1%83%D1%87%D0%B0%D1%8F%D1%85-%D0%BD%D0%B5-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82-%D0%BF%D1%80%D0%BE%D0%B4%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-SSL-%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%B0-%D0%B4%D0%BB%D1%8F-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B0-%D1%81%D0%BB%D1%83%D0%B6%D0%B1%D1%8B-KeenDNS