我的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
但是对于我来说,还不清楚何时添加“傀儡”,何时不能。
为了这个答案的其他人的利益:
由于CVE-2011-3872 ,Puppet不再支持certdnsnames选项。 从文档:
在CVE-2011-3872之后,certdnsnames设置不再起作用。 我们完全忽略了这个价值。 对于您自己的证书请求,您可以在configuration中设置dns_alt_names,它将在本地应用。 没有configuration选项为其他节点证书设置DNS替代名称或任何其他subjectAltName值。 或者,您可以使用–dns_alt_names命令行选项来设置在生成自己的CSR时添加的标签。
您可以使用如下所示的subjectAlternativeName为您的服务器生成SSL证书:
$ puppet cert generate <puppet master's certname> --dns_alt_names=<comma-separated list of DNS names>
certdnsnames是一个以冒号分隔的列表。 对于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}
生成新的证书(添加你想要的ALT名称):
puppet cert generate $(hostname -f) --dns_alt_names=$(hostname -f),puppet
重启puppetserver来使用新的证书
service puppetserver restart
根据
puppet agent --genconfig
您必须使用冒号分隔(“:”不是“;”)列表。
所以应该是
certdnsnames = 'puppet:puppet.local:myname.dyndns.org:hivemind.local'
HTH