Рейтинг:0

Настройка BIND9 (версия 9.16) для разрешения обновлений TXT DNS от Letsncrypt

флаг jp

Решение следующей проблемы: Используйте $ddns-confgen или же $tsig-keygen, первый предоставляет вам синтаксис для вставки в ваш named.conf файл

Проблема:

Я пытаюсь настроить BIND9 (ver9.161-Ubuntu), чтобы позволить мне создавать записи TXT, которые Letsecrypt может использовать для проверки домена, что в конечном итоге позволяет создавать сертификаты SSL для внутренних/частных систем.

Документации по процессам предостаточно, в частности пошаговое руководство от Home Assistant (комплект домашней автоматизации по настройке nginx + letsencrypt). ОДНАКО алгоритмы и процессы, по-видимому, изменились с момента первоначального создания документации.

Документация требует, чтобы был сгенерирован ключ DNSSEC, позволяющий обновлять хост.

$dnssec-keygen -a HMAC-SHA512 -b 512 -n HOST letsencrypt

dnssec-keygen: фатальный: неизвестный алгоритм HMAC-SHA512

Если я побегу dnssec-keygen --help, он предоставляет список алгоритмов, которые

"RSASHA1 | NSEC3RSASHA1 | RSASHA256 | RSASHA512 | ECDSAP256SHA256 | ECDSAP384SHA384 | ED25519 | ED448 | DH"

Если вышеуказанная команда изменена на: РСАША512 и размер ключа меняется на 1024 затем системные ошибки с:

dnssec-keygen: фатальный: неверный тип имени DNSKEY HOST

После прохождения алгоритма единственным, который не выдает ошибку, является DH, при установке алгоритма на DH генерируется ключ.

Следующая проблема заключается в том, что протокол DH не распознается при использовании в файле name.conf.local.

добавление ключевого раздела в named.conf.local файл:

ключ "letsencrypt" {
  алгоритм ДХ;
  секрет "averylongkey==";
};

но когда я бегу:

$ sudo с именем-checkconf
/etc/bind/named.conf.local:14: неизвестный алгоритм «DH»

В основном старая документация просит вас использовать устаревший метод кейгена.

Patrick Mevzek avatar
флаг cn
Ваш заголовок и первая строка текста не сочетаются друг с другом. Записи `TXT` для Let's Encrypt нужны для выдачи сертификатов и не требуют какой-либо конкретной настройки DNS, в то время как весь ваш текст говорит о DNSSEC, и вы кажетесь совершенно запутанным.Вам вообще не нужен DNSSEC (и, вероятно, не стоит пытаться использовать его прямо сейчас, пока вы полностью не разберетесь с ним), просто добавьте одну запись `TXT` для Let's Encrypt.
Patrick Mevzek avatar
флаг cn
«В документации требуется ключ DNSSEC» Где вы нашли документацию по добавлению записей `TXT`, в которой вас просят настроить DNSSEC?
Patrick Mevzek avatar
флаг cn
«После изучения алгоритма единственным, который не выдает ошибку, является DH». Не делайте таких вещей. Я имею в виду полное непонимание того, что происходит, и просто слепое тестирование всех значений, пока не будет найдено то, которое работает, но вы понятия не имеете, что оно делает и почему оно работает. Это никогда не будет работать должным образом, а в случае с DNS и тем более с DNSSEC вызовет только серьезные проблемы в будущем...
Рейтинг:0
флаг ar

Вам не нужен ключ DNSSEC. Вам нужен ключ RNDC. Выполнить, например. rndc-confgen для создания предлагаемой конфигурации и секрета. Возможно, вам придется адаптировать эту конфигурацию в соответствии с вашими потребностями в отношении хостов, которым разрешено обновление, и привязки интерфейсов, которые должны принимать обновления.

Рейтинг:0
флаг cn

На самом деле это просто настройка обычной конфигурации, позволяющей динамически обновлять зону.

Создайте ключ, подходящий для TSIG, например:

$ tsig-keygen ключ letsencrypt
ключ "letsencrypt-ключ" {
        алгоритм hmac-sha256;
        секрет "igyPH4oXPjutSfJVpv3CTgTjxSOyehJ7uVO274UuUDo=";
};
$

и поместите этот ключ в свой конфиг.

Затем для соответствующей зоны добавьте политика обновления который позволяет клиенту, использующему этот ключ, управлять любыми записями, которые вам нужны для этой цели.

Например

зона "example.com {
...
    политика обновления {
        предоставить letsencrypt-ключ. имя _acme-challenge.www.example.com. ТЕКСТ;
        предоставить letsencrypt-ключ. имя _acme-challenge.example.com. ТЕКСТ;
        ...
    };
};

Примечание:
Имейте в виду, что когда зона настроена на управление с помощью динамических обновлений, внесение изменений в файл зоны недопустимо ни для чего, кроме самого BIND.
Это подразумевает несколько иной рабочий процесс, если файл редактировался непосредственно перед этим, но в целом я бы сказал, что это более современный и менее подверженный ошибкам подход, когда все изменения вносятся через протокол динамических обновлений, а не внешние процессы, записывающие в файл зоны напрямую. Инструмент как например нсви допускает аналогичный опыт редактирования, но с изменениями, применяемыми через динамические обновления.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.