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, подписи и дайджест, а также не будет проверять их.

Что вызывает вопрос: вам действительно нужно поддерживать ГОСТ или вы можете перейти на другой алгоритм?

Другие вопросы по тегам