我在让傀儡代理验证主机时遇到了问题。
在代理上,我首先做了
sudo puppet agent --test
info: Creating a new SSL key for m-agent-2
info: Caching certificate for ca
info: Creating a new SSL certificate request for m-agent-2
info: Certificate Request fingerprint (md5): 43:30:57:53:5B:20:F7:12:CD:94:59:17:12:28:68:A4
然后在 master 上我做了sudo puppet cert list
并得到了
"m-agent-2" (43:30:57:53:5B:20:F7:12:CD:94:59:17:12:28:68:A4)
然后我做了sudo puppet cert sign m-agent-2
,结果
notice: Signed certificate request for m-agent-2
notice: Removing file Puppet::SSL::CertificateRequest m-agent-2 at
'/var/lib/puppet/ssl/ca/requests/m-agent-2.pem'
然后我做了sudo puppet agent --test
,结果
info: Caching certificate for m-agent-2
err: Could not retrieve catalog from remote server: Server hostname 'puppet' did not match server certificate; expected master-node-1
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run
err: Could not send report: Server hostname 'puppet' did not match server certificate; expected master-node-1
conf 文件certname = master-node-1
中的[main]
和[master]
部分都包含该行。我通过以下操作重新生成了 master 的证书
sudo find $(puppet master --configprint ssldir) -name "$(puppet master --configprint certname).pem" -delete
sudo puppet master --no-daemonize --verbose
另外,我的 /etc/hosts 文件包含这些行10.20.32.10 learn.localdomain learn puppet.localdomain puppet
,我可以从代理 ping puppet 和 puppet.learn。
但是我仍然遇到同样的问题。有什么方法可以解决这个问题吗?或者完全禁用 puppet 中的身份验证。主节点和从节点都运行 Ubuntu 12.04,而我运行的是 puppet 2.7.11。任何帮助都非常感谢。
答案1
您的客户端期望主服务器的主机名是puppet
,根据其server
配置puppet.conf
- 这是默认设置,因此如果您没有配置 ,server
则它将使用puppet
。主服务器的 SSL 证书必须对该名称有效,否则客户端将拒绝连接。
通常情况下,主服务器会使用主题备用名称生成对其自己的主机名和主机名有效的证书。但是主服务器中的puppet
显式名称可能会覆盖此内容。通过检查进行验证- 它应该在证书指纹后显示类似内容。certname
puppet.conf
puppet cert --list master-node-1
(alt names: "puppet")
纠正方法是让您的客户端使用其配置指向真实主机名server
,或者让服务器的证书对主机名有效puppet
。