1

dsfromkey 命令生成具有以下摘要类型 DSA/SHA1、RSA/SHA-1、DSA-NSEC3-SHA1、RSA/SHA-512、GOST R 34.10-2001 等的 ds 记录

我正在使用以下命令

dnssec-dsfromkey - 一个密钥文件

例如:

dnssec-dsfromkey -a GOST 密钥文件

但它的表现

dnssec-dsfromkey:致命:未知算法 GOST

我正在使用绑定版本 BIND 9.9.4-RedHat-9.9.4-61.el7_5.1

任何帮助将不胜感激。

4

1 回答 1

1

该文档似乎具有误导性。

从它的 git 存储库中查看 bind9 源代码,您可以看到-a选项中的选项dnssec-dsfromkey由函数处理,该函数strtodsdigest足够短,可以在下面复制,并且如您所见,其中没有 GOST 的痕迹,因此您(或任何人)没有 GOST否则这些来源)!

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);
        }
}

现在正在研究 3 个月前发布的更改https://gitlab.isc.org/isc-projects/bind9/commit/27593e65dc4f1565bb45d91eb561a504da627c41,您可以看到 GOST 已完全删除,特别是在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 包是在没有 GOST 支持的情况下编译的。

因此,您将需要找到另一个包或使用适当的标志自己编译它(--enable-gost有时configure),但不是最新的源代码,因为正如我在上面所说的,GOST 现在已被完全删除。

请参阅https://kb.isc.org/article/AA-01636/0/BIND-9.13.2-Release-Notes.html说:

对 ECC-GOST (GOST R 34.11-94) 算法的支持已从 BIND 中删除,因为该算法已被 RFC6986 中的 GOST R 34.11-2012 取代,并且不得在新部署中使用。BIND 既不会创建新的 DNSSEC 密钥、签名和摘要,也不会验证它们。

这提示了一个问题:您真的需要支持 GOST 还是可以切换到另一种算法?

于 2018-08-31T17:00:19.150 回答