BIND 9.16 представил новый dnssec-policy
функция как еще одно более автоматизированное средство управления ключами DNSSEC и подписи в течение давно установленного auto-dnssec maintain
функциональность.
Документация, похоже, не охватывает переход от старого к новому, но соответствующая вики-страница похоже, указывает на то, что уже существующие ключи будут подобраны dnssec-policy
.
Тем не менее, создание новой зоны с dnssec-policy
достаточно просто, но перенос существующей зоны из auto-dnssec maintain
к dnssec-policy
похоже, не работает, как можно было бы ожидать.
Я ожидал, что политика, совместимая с существующими ключами, продолжит использовать эти ключи.
Похоже, что все существующие ключи немедленно удаляются из зоны, потому что они «просрочены» и заменяются новыми ключами, даже если новая политика требует совместимого набора ключей (тот же алгоритм и размер), а существующие ключи имеют не определены свойства конца срока службы (только Created
, Publish
и Activate
тайминги в файлах .key).
Политика, которую я использовал при тестировании, выглядит так (названа так, чтобы отразить, что к чему во время тестирования):
dnssec-policy alg13-ksk-unlimited-zsk-60day {
keys {
ksk key-directory lifetime unlimited algorithm ECDSAP256SHA256;
zsk key-directory lifetime P60D algorithm ECDSAP256SHA256;
};
};
Это вывод журнала при изменении конфигурации с auto-dnssec maintain;
к dnssec-policy alg13-ksk-unlimited-zsk-60day;
:
zone zone.example/IN (signed): reconfiguring zone keys
keymgr: DNSKEY zone.example/ECDSAP256SHA256/49004 (KSK) created for policy alg13-ksk-unlimited-zsk-60day
keymgr: DNSKEY zone.example/ECDSAP256SHA256/54646 (ZSK) created for policy alg13-ksk-unlimited-zsk-60day
Removing expired key 20481/ECDSAP256SHA256 from DNSKEY RRset.
DNSKEY zone.example/ECDSAP256SHA256/20481 (ZSK) is now deleted
Removing expired key 12506/ECDSAP256SHA256 from DNSKEY RRset.
DNSKEY zone.example/ECDSAP256SHA256/12506 (KSK) is now deleted
Fetching zone.example/ECDSAP256SHA256/49004 (KSK) from key repository.
DNSKEY zone.example/ECDSAP256SHA256/49004 (KSK) is now published
DNSKEY zone.example/ECDSAP256SHA256/49004 (KSK) is now active
Fetching zone.example/ECDSAP256SHA256/54646 (ZSK) from key repository.
DNSKEY zone.example/ECDSAP256SHA256/54646 (ZSK) is now published
DNSKEY zone.example/ECDSAP256SHA256/54646 (ZSK) is now active
zone zone.example/IN (signed): next key event: 22-Mar-2020 15:08:19.805
Как видно, существующие ключи были немедленно удалены (даже после обычной процедуры одновременного нажатия клавиш!) И заменены новыми ключами того же типа.
Учитывая, что простая мгновенная замена ключей вместо выполнения намеченной процедуры опрокидывания ломает все, очевидно, что простое переключение конфигурации на dnssec-policy
это непроходимо.
Глядя на ключевые файлы, отмечу, что дополнительный .state
файл добавляется рядом со старым и новым ключами.
Я не знаю, нужен ли этот файл для правильного dnssec-policy
операция как-нибудь? Может ли создание этих файлов заранее избежать такого поведения?
По сути, вопрос заключается в следующем: есть ли способ перейти на использование dnssec-policy
без нарушения работы? Если да, то как?
Поведение, описанное в вопросе, было ошибкой, которая должна быть устранена в версии BIND 9.16.2.
Из Примечания к выпуску BIND 9.16.2:
Исправление ошибок
[вырезать]
- При попытке перенести уже подписанную зону из режима auto-dnssec в зону, основанную на политике dnssec, существующие ключи немедленно удалялись и заменялись новыми. Поскольку ограничения по времени смены ключей не соблюдались, было возможно, что некоторые клиенты не смогли бы проверить ответы, пока вся старая информация DNSSEC не истекла из кешей. BIND теперь просматривает метаданные времени существующих ключей и включает их в свою операцию политики DNSSEC. [GL # 1706]