我在网上搜索了一下,发现其他列表/论坛上也有人遇到过这个问题。在主服务器上签署证书后,第二次运行 sudo puppetd --waitforcert 60 --test 时,出现了此错误-
notice: Got signed certificate
warning: Certificate validation failed; considering using the certname configuration option
err: /File[/var/lib/puppet/lib]: Failed to generate additional resources during transaction: Certificates were not trusted: hostname was not match with the server certificate
我不确定我是否理解了问题所在或如何解决它。所以我问了这个问题。
我在局域网上的两台服务器上设置了 puppet。puppetmaster 名为“puppet”,另一台服务器名为“puppetclient”。我将 puppet 放入 puppetclient 上的 /etc/hosts 中。
运行 hostname -f 将在相应的服务器上显示 puppet 和 pupperclient。我不确定还能尝试什么。有人有什么见解吗?
答案1
听起来 puppetmaster 证书是在主机名为“puppet”以外的其他名称时创建的。重新创建证书就好了。
证书中存储的名称必须与您配置客户端连接的名称完全匹配。例如,如果您将客户端配置为连接到“puppet.domain.com”,则如果证书名为“puppet”,您将收到错误,反之亦然。
答案2
如果您想要为您的 puppetmaster 使用 DNS CNAME,您可以使用以下命令启动 puppetmaster:
puppetmaster --certname cname.domain.org
这将使 puppetmaster 使用cname.domain.org
默认的完全限定域名。
答案3
标志--certname cname.domain.org
选项似乎对我起了作用(在 Amazon EC2 上)
答案4
在指定的客户端和服务器上安装 Puppet 之前,请检查 /etc/resolv.conf 文件并验证“搜索”行上的第一个域条目是否是您希望 Puppet 在其下运行的域。例如:
搜索 my.puppetdomain.com my.public.domain.com
名称服务器 192.168.1.1 名称服务器 xxx.xxx.1.1
在 Puppet 安装阶段,Puppet 服务器将根据 /etc/resolv.conf 中的第一个搜索条目生成其证书。我发现这很困难。如果您在任何 Puppet 节点上看到与证书相关的错误,请执行以下步骤:
1) 编辑 /etc/resolv.conf 并验证“搜索”行中列出的第一个域是否反映您希望 Puppet 在其中运行的域。
2)卸载puppet(保持/etc/puppet目录不变)。
3) rm -rf /var/lib/puppet
4)重新安装 Puppet(这将生成一个新的 /var/lib/puppet 目录)。
5)如果在 Puppet 服务器上执行此操作,请运行/usr/sbin/puppetmasterd——mkusers(或者,运行/usr/local/sbin/puppetmasterd——mkusers)。这将在 /var/lib/puppet 中生成所有必需的文件,包括使用正确域名的新内部证书。
6) 如果在 Puppet 客户端上执行此操作,请以详细模式启动 Puppet,并启用 --waitforcert 标志: puppetd-server.puppetdomain.com--waitforcert 60--测试 此步骤将向 Puppet 服务器发送证书请求。
7)在Puppet服务器上,列出等待的证书:
puppetca——列表
您应该看到发出请求的 Puppet 客户端的主机名:
puppetclient1.puppetdomain.com
8)从 Puppet 服务器,签署刚刚列出的 Puppet 客户端的证书:
puppetca --sign puppetclient1.puppetdomain.com
那么你就完成了。
呼呼....