该文档似乎具有误导性。
从它的 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 还是可以切换到另一种算法?