dnssec-dsfromkey, показывающий неизвестную ошибку алгоритма - PullRequest
0 голосов
/ 31 августа 2018

Команда dsfromkey для создания записи DS со следующими типами дайджеста DSA / SHA1, RSA / SHA-1, DSA-NSEC3-SHA1, RSA / SHA-512, ГОСТ Р 34.10-2001 и т. Д.

Я использую следующую команду

dnssec-dsfromkey -a ключевой файл

например:

dnssec-dsfromkey -a ключевой файл ГОСТ

Но его показ

dnssec-dsfromkey: неустранимый: неизвестный алгоритм ГОСТ

И я использую версию BIND BIND 9.9.4-RedHat-9.9.4-61.el7_5.1

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 31 августа 2018

Документация кажется вводящей в заблуждение.

Просматривая исходный код 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#18b3c86fc6dac451f69355fe2f743d98b043255a, что предыдущий фрагмент кода имел ранее:

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

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

...