解决以下问题:使用$ddns-confgen或$tsig-keygen,前者为您提供了粘贴到named.conf文件中的语法。
问题:
我正在尝试配置一个BIND9 (ver9.161-Ubuntu),允许我创建TXT记录,Letsecrypt可以使用这些记录来验证域,最终允许生成用于内部/私有系统的SSL证书。
有大量关于过程的文档,特别是家庭助理(关于配置nginx +letsencrypt的家庭自动化套件)的一步一步的指南。然而,自文档最初生成以来,算法和流程似乎发生了变化。
文档要求生成DNSSEC密钥以允许主机更新。
$dnssec-keygen -a HMAC-SHA512 -b 512 -n HOST letsencrypt
dnssec-keygen: fatal: unknown algorithm HMAC-SHA512如果我运行dnssec-keygen --help,它提供了一个算法列表,这些算法是
"RSASHA1、NSEC3RSASHA1、RSASHA256、RSASHA512、ECDSAP256SHA256、ECDSAP256SHA256、ED25519、ED448、ED448、DH“
如果将上述命令更改为:RSASHA512,键大小更改为1024,则系统错误有:
dnssec-keygen: fatal: invalid DNSKEY nametype HOST在遍历了算法的唯一不抛错误的是DH之后,通过将算法设置为DH,生成了一个密钥。
下一个问题是,DH协议在name.conf.local文件中使用时不被识别。
将密钥部分添加到named.conf.local文件中:
key "letsencrypt" {
algorithm DH;
secret "averylongkey==";
};但当我跑的时候
$ sudo named-checkconf
/etc/bind/named.conf.local:14: unknown algorithm 'DH'基本上,旧文档要求您使用过时的keygen方法。
发布于 2022-04-12 19:56:17
这实际上只是设置一个正常的配置,以允许对区域进行动态更新。
创建一个适合TSIG的键,例如:
$ tsig-keygen letsencrypt-key
key "letsencrypt-key" {
algorithm hmac-sha256;
secret "igyPH4oXPjutSfJVpv3CTgTjxSOyehJ7uVO274UuUDo=";
};
$然后把这个键放到你的配置中。
然后,对于相关区域,添加一个update-policy,允许使用此键的客户端管理任何记录(S),这是您为此目的所需要的。
例如
zone "example.com {
...
update-policy {
grant letsencrypt-key. name _acme-challenge.www.example.com. TXT;
grant letsencrypt-key. name _acme-challenge.example.com. TXT;
...
};
};Sidenote:请记住,当一个区域被配置为通过动态更新进行管理时,除了绑定自己对区域文件进行更改之外,任何事情都是不合适的。如果文件以前是直接编辑的,这确实意味着一个稍微不同的工作流程,但总的来说,我要说,这是一种更现代、更不容易出错的方法,可以通过动态更新协议进行所有更改,而不是由外部进程直接写入区域文件。例如,nsvi这样的工具确实允许类似的编辑体验,但通过动态更新应用更改。
发布于 2022-03-30 16:10:23
你不需要DNSSEC密钥。你需要一个RNDC密钥。运行rndc-confgen以生成建议的配置和机密。您可能必须调整此配置,以适应您对允许更新的主机的需要,并且接口绑定应该接受更新。
https://serverfault.com/questions/1097383
复制相似问题