如何向我的 puppetmaster 添加多个 dns 名称?

c33*_*33s 18 domain-name-system certificate puppet

我在主人上的 puppet.conf

[master]
certname = myname.mydomain.com
ca_server = myname.mydomain.com
certdnsnames = puppet;puppet.local;myname.dyndns.org;hivemind.local;
Run Code Online (Sandbox Code Playgroud)

根据我对 certdnsnames 定义的理解,以下应该有效:

puppet agent --server myname.dyndns.org --test
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

err: Could not retrieve catalog from remote server: hostname was not match with the server certificate
Run Code Online (Sandbox Code Playgroud)

如何避免这个错误?如何正确定义certdnsnames?我找到了不同的文档,但没有简单的例子。ii使用“,”作为分隔,我根本无法签名。我也看到过类似的语法

certdnsnames = puppet:puppet.intra.myserver.fr,puppet.myserver.fr:puppet,puppet:puppet,puppet.intra.myserver.fr,puppet.myserver.fr
Run Code Online (Sandbox Code Playgroud)

http://projects.puppetlabs.com/issues/5776

但对我来说,不清楚何时添加“木偶:”,何时不添加。

lar*_*sks 27

为了偶然发现此答案的任何其他人的利益:

由于CVE-2011-3872,Puppet 不再支持该certdnsnames选项。从文档:

在 CVE-2011-3872 之后,certdnsnames 设置不再起作用。我们完全忽略了这个值。对于您自己的证书请求,您可以在配置中设置 dns_alt_names,它将在本地应用。没有配置选项可以为另一个节点证书设置 DNS alt 名称或任何其他 subjectAltName 值。或者,您可以使用 --dns_alt_names 命令行选项来设置在生成您自己的 CSR 时添加的标签。

您可以使用 subjectAlternativeName 为您的服务器生成 SSL 证书,如下所示:

$ puppet cert generate <puppet master's certname> --dns_alt_names=<comma-separated list of DNS names>
Run Code Online (Sandbox Code Playgroud)

  • 嘿,感谢过去的拉斯。你刚刚回答了我的问题。 (9认同)
  • 附加说明:在运行 puppet cert generate 之前,删除 /var/lib/puppet/ssl/private_keys、/var/lib/puppet/ssl/ca/signed/ 和 /var/lib/puppet 中的 puppet master 的 .pem 文件/SSL/证书。生成新证书不会终止与现有客户端的连接,因为它们会使用 CA 的证书验证 puppetmaster 的证书,这些证书是他们在第一次连接时下载的。 (3认同)