Proxmox
December 2, 2024

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