Puppet主机名与服务器证书不匹配

我正在尝试安装一个安装了puppet的Ubuntu虚拟机,这样我可以在本地testing我们的生产环境。 我很难让傀儡大师和傀儡交谈。 让我带你走过我的脚步。 (服务器的hostname是“web1.xxx.xxx.net”格式的FQDN)。

所以首先,我从/etc/puppet/ssl目录中清除所有的pem文件(当然除了CA pem),这样我就可以重新开始了。 puppetca --list返回没有结果。

然后,我运行puppetd --test为傀儡大师生成一个CSR。 puppetca --list现在包含我的主机名(“web1.xxx.xxx.net”)。

然后我运行puppetca --sign web1.xxx.xxx.net 。 现在puppetca --list是空的 – 一切正常工作到目前为止。

最后,我运行puppetd --test再次testing。 我得到以下输出:

 err: Could not retrieve catalog from remote server: hostname was not match with the server certificate warning: Not using cache on failed catalog err: Could not retrieve catalog; skipping run 

列出/etc/puppet/ssl目录的内容显示了与我的hostname匹配的正确服务器名称的PEM文件。 任何人有任何想法如何攻击这个问题?

错误是因为客户端默认连接到服务器主机名“puppet”,但是呈现的证书没有“puppet”作为主题或SubjectAltName属性。

要解决它,你可以(select一个):

  1. 而不是通过运行puppetd初始化你的木偶大师的证书,通过运行puppetd初始化它 – 这将导致证书主题名称包括“木偶”。

  2. 而不是让事情发生,你可以使用puppetca --generate --certdnsnames puppet:puppet.mydomain.com web1.xx.xx.xx.net – certdnsnames选项指定一个SubjectAltNames列表,它将包含在证书中; 它应该有一个由客户端用来联系服务器的冒号分隔列表。

  3. 而不是在客户端运行puppetd --test --server=web1.xx.xx.xx.net ,运行puppetd --test --server=web1.xx.xx.xx.net这样客户端连接的服务器名称就是服务器提供的证书中实际存在的名称。

查看masterzen的优秀博客条目,以进一步排除故障: Puppet SSL Explained

你检查puppetmaster日志文件吗? 我发现同样的问题,并发现服务器logging证书信息:

 [2012-02-28 16:21:09] INFO Certificate: Data: Version: 3 (0x2) Serial Number: 2 (0x2) Signature Algorithm: sha1WithRSAEncryption Issuer: CN=ca Validity Not Before: Feb 26 16:32:46 2012 GMT Not After : Feb 24 16:32:46 2017 GMT Subject: CN=ubuntu.localdomain 

字段Subject显示CN是“ubuntu.localdomain”,所以我通过这样做来执行傀儡:

 puppetd -t --server=ubuntu.localdomain --fqdn=myfqdn 

希望这可以帮助 :-)

除了Pau的回答之外,我还想强调一下,你可以使用以下方式检查傀儡证:

 openssl x509 -text -in /var/lib/puppet/ssl/certs/<hostname_of_puppet_master> 

然后确保从客户端使用完全相同的主机名:

 puppetd --server <hostname_of_puppet_master> <etc> 

两台服务器能否互相解决? 我的猜测是,既然你是VMing,你可能会错过名字parsing。 如果您不使用DNS来让服务器彼此parsing,则需要将条目添加到两台服务器上的/etc/hosts文件中。

木偶需要主机名parsing到正确的IP,没有这个,你会得到你提到的错误。 完成后您可能需要重新创build证书。 两台机器都应该能够通过主机名来ping每个机器。

另外要注意的是,你在服务器上同步时间。 如果你不这样做,证书可能是无效的。