LINUX.ORG.RU

geoip + letsencrypt == pain

 , , , ,


1

1

Доброго времени суток. Имеется bind, имеется замечательный скрипт отсюда https://geoip.site/, который структурирует информацию о геолокации клиента в виде acl записей, имеется dns-rfc2136 плагин для certbot'а.

Проблема заключается в том, что, по всей видимости, во время челенджа для получения сертификата текстовая запись добавляется в базу для европейского континента, а проверяется уже в базе для другого континента. В результате получаю такую ошибку:

Failed authorization procedure. domain.here (dns-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: No TXT record found at _acme-challenge.domain.here

Вопрос: можно ли, используя фильтр из view, каким-нибудь образом направить letsencrypt в одну базу? Или использовать geoip с letsencrypt не вариант?

PS: letsencrypt не выдают свои адреса.

PS2: named.conf.local примерно такой

key "keyname." {
        algorithm hmac-sha512;
        secret "secrethere";
};

include "/etc/bind/GeoIP.acl";

view "australia" {
       match-clients { AU; };
       recursion no;
       zone "domain.here" {
               type master;
               file "/var/lib/bind/db.domain.here-australia";

               update-policy {
                       grant keyname. name _acme-domain.here. txt;
               };

               allow-transfer {                                                                                                                       
                       1.2.3.4;                                                           
               };
               notify yes;
       };
};

...

view "other" {
        match-clients { any; };
        recursion no;
        zone "domain.here" {
                type master;
                file "/var/lib/bind/db.domain.here-other";

                update-policy {
                        grant keyname. name _acme-challenge.domain.here. txt;
                };

                allow-transfer {                                                                                                
                        1.2.3.4;                                                                
                };
                notify yes;
        };
};

PS3: из журнала бинда:

client 2.3.4.5#44736/key keyname: view europe: updating zone 'domain.here/IN': adding an RR at '_acme-challenge.bf00-domain.here' 

client 2.3.4.5#44740/key keyname: view europe: updating zone 'domain.here/IN': deleting an RR at _acme-challenge.bf00-domain.here
отсюда видно, куда добавлятся запись


Проблема заключается в том, что, по всей видимости, во время челенджа для получения сертификата текстовая запись добавляется в базу для европейского континента

А во все добавить нельзя?

Tanger ★★★★★ ()
Ответ на: комментарий от Tanger

Она добавляется не вручную, а запросом, затем удаляется. Процесс certbot'ом полностью контролируется, точно не знаю по какому принципу, но bind пишет в журнал это

client 2.3.4.5#44808/key keyname: view other: updating zone 'domain.here/IN': adding an RR at '_acme-challenge.domain.here' TXT "BAsnZBHcqiggT4kqVPeacbt_yu9TlxKe9gzvE5gNpnk"
затем
client 2.3.4.5#44814/key keyname: view other: updating zone 'domain.here/IN': deleting an RR at _acme-challenge.domain.here TXT
Причем значение TXT записи рандомное. С удовольствием бы узнал, как использовать конкретное значение, чтобы добавить его в зону самостоятельно, но в мане ничего про это не нашел.

Rot1 ()
Последнее исправление: Rot1 (всего исправлений: 1)
Ответ на: комментарий от Rot1

Попробуй

--manual Obtain certificates interactively, or using shell script

Смысл в том, что бот дёргает скрипт с параметрами для челенджа. Останется только погуглить как этот скрипт должен быть устроен и из него печатать эти самые параметры.

imul ★★★★★ ()