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


16

我的主人puppet.conf

[master]
certname = myname.mydomain.com
ca_server = myname.mydomain.com
certdnsnames = puppet;puppet.local;myname.dyndns.org;hivemind.local;

就我对certdnsnames定义的理解而言,以下应该起作用:

puppet agent --server myname.dyndns.org --test

但我得到以下错误:

err: Could not retrieve catalog from remote server: hostname was not match with the server certificate

如何避免这个错误?如何正确定义certdnsnames?我发现与此有关的文档不尽相同,但没有简单的示例。ii使用“,”进行分隔,我根本无法签名。我也看到过这样的语法

certdnsnames = puppet:puppet.intra.myserver.fr,puppet.myserver.fr:puppet,puppet:puppet,puppet.intra.myserver.fr,puppet.myserver.fr

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

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

Answers:


25

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

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

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

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

$ puppet cert generate <puppet master's certname> --dns_alt_names=<comma-separated list of DNS names>

3
附加说明:在运行puppet cert generate之前,请删除/ var / lib / puppet / ssl / private_keys,/ var / lib / puppet / ssl / ca /​​ signed /和/ var / lib / puppet中的puppet主文件的.pem文件。 / ssl / certs。生成新证书并不会中断与现有客户端的连接,因为它们会使用CA的证书来验证puppetmaster的证书,该证书是他们在首次连接时下载的。
埃里克·福斯伯格

9
嘿,感谢拉尔斯的过去。您刚刚回答了我的问题。
larsk's

2

对于Puppet 4+,使用以下命令来更改puppetserver证书的可接受dns名称:

将现有证书重命名为* .backup:

mv /etc/puppetlabs/puppet/ssl/private_keys/$(hostname -f).pem{,.backup}
mv /etc/puppetlabs/puppet/ssl/ca/signed/$(hostname -f).pem{,.backup}
mv /etc/puppetlabs/puppet/ssl/certs/$(hostname -f).pem{,.backup}

生成新证书(添加所需的替代名称):

puppet cert generate $(hostname -f) --dns_alt_names=$(hostname -f),puppet

重新启动puppetserver以使用新证书

service puppetserver restart


0

根据

puppet agent --genconfig

您必须使用冒号分隔的列表(“:”而不是“;”)。

所以应该

certdnsnames = 'puppet:puppet.local:myname.dyndns.org:hivemind.local'

高温超导


0

要将SAN条目添加到人偶服务器证书,请使用:

systemctl stop puppetserver
puppetserver ca setup --subject-alt-names $(hostname -f),puppet
systemctl start puppetserver

可能需要通过清除从现有的证书rm -rf $(puppet master --configprint ssldir),以及

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.