dnssec-dsfromkey, показывающий неизвестную ошибку алгоритма
Команда dsfromkey для создания записи DS со следующими типами дайджеста DSA/SHA1, RSA/SHA-1,DSA-NSEC3-SHA1, RSA/SHA-512, ГОСТ Р 34.10-2001 и т. д.
Я использую следующую команду
dnssec-dsfromkey -a ключевой файл
например:
dnssec-dsfromkey -a ключевой файл ГОСТ
Но его показ
dnssec-dsfromkey: fatal: неизвестный алгоритм ГОСТ
И я использую версию BIND BIND 9.9.4-RedHat-9.9.4-61.el7_5.1
Любая помощь будет оценена.
1 ответ
Документация кажется вводящей в заблуждение.
Просматривая исходный код bind9 из его репозитория git, вы можете увидеть, что -a
вариант в dnssec-dsfromkey
обрабатывается функцией strtodsdigest
который достаточно короткий, чтобы его можно было воспроизвести ниже, и, как вы можете видеть, в нем нет следов ГОСТа, поэтому нет ГОСТа для вас (или для кого-либо еще с этими источниками)!
unsigned int
strtodsdigest(const char *algname) {
if (strcasecmp(algname, "SHA1") == 0 ||
strcasecmp(algname, "SHA-1") == 0)
{
return (DNS_DSDIGEST_SHA1);
} else if (strcasecmp(algname, "SHA256") == 0 ||
strcasecmp(algname, "SHA-256") == 0)
{
return (DNS_DSDIGEST_SHA256);
} else if (strcasecmp(algname, "SHA384") == 0 ||
strcasecmp(algname, "SHA-384") == 0)
{
return (DNS_DSDIGEST_SHA384);
} else {
fatal("unknown algorithm %s", algname);
}
}
Теперь изучаем изменения https://gitlab.isc.org/isc-projects/bind9/commit/27593e65dc4f1565bb45d91eb561a504da627c41 выпущенные 3 месяца назад, где полностью удален ГОСТ, вы можете увидеть, в частности, на https://gitlab.isc.org/isc-projects/bind9/commit/27593e65dc4f1565bb45d91eb561a504da627c41, который ранее имел вышеуказанный фрагмент кода:
#if defined(HAVE_OPENSSL_GOST) || defined(HAVE_PKCS11_GOST)
} else if (strcasecmp(algname, "GOST") == 0) {
return (DNS_DSDIGEST_GOST);
#endif
Это означает, что bind
Вы имели в виду, что поддержка GOST зависела от того, как она была скомпилирована, и от того, имели ли соответствующие библиотеки openssl/pkcs11 поддержку GOST или нет.
Полагаю, ваш конкретный пакет RedHat был скомпилирован без поддержки ГОСТа.
Так что вам нужно будет либо найти другой пакет, либо скомпилировать его с соответствующими флагами (--enable-gost
в configure
время), но не последний исходный код, потому что, как я уже говорил выше, ГОСТ был полностью удален.
См. https://kb.isc.org/article/AA-01636/0/BIND-9.13.2-Release-Notes.html котором говорится:
Поддержка алгоритма ECC-GOST (ГОСТ Р 34.11-94) удалена из BIND, поскольку алгоритм был заменен ГОСТ Р 34.11-2012 в RFC6986, и его нельзя использовать в новых развертываниях. BIND не будет создавать новые ключи DNSSEC, подписи и дайджест, а также не будет проверять их.
Что вызывает вопрос: вам действительно нужно поддерживать ГОСТ или вы можете перейти на другой алгоритм?