我已设置 Puppet Master/Agent,并已成功为 Master 上的 Agent 签署证书。然而,运行时puppet agent --test
出现如下错误:
Warning: Unable to fetch my node definition, but the agent run will continue:
Warning: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]
Info: Retrieving plugin
Error: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]
Error: /File[/var/lib/puppet/lib]: Could not evaluate: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com] Could not retrieve file metadata for puppet://hostname.domain.com/plugins: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]
Error: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
Error: Could not send report: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=hostname.domain.com]
这hostname.domain.com
是主人
我该如何解决这个问题?我已确保两个时钟在同一时区处于正确时间,我已删除代理/var/lib/puppet/ssl
目录中的所有内容并辞职,我不知道还能做什么。
答案1
重新创建整个客户端证书设置。这始终可以解决我们过去遇到的任何证书问题。以下说明假设您的代理的主机名为 agenthost.hostname.com
在客户端上,删除所有存储的证书,包括 CA:
find /var/lib/puppet/ssl -name '*.pem' -delete
在主服务器上,删除此客户端的所有待处理的 CSR 或旧客户端证书:
find /var/lib/puppet/ssl -name agenthost.domain.com.pem -delete
然后,在客户端上重新连接到主服务器并发送 CSR:
puppet agent -t --waitforcert=60
当它等待时(如果你没有设置启用自动签名),主服务器将批准 CSR,以便发回新的客户端证书:
puppet cert sign agenthost.domain.com
这应该让代理重新下载 Puppet CA 证书,并重新申请自己的证书。
过去,当我们更改 Puppet 服务器且 CA 证书发生更改时,或者当我们重建具有相同主机名的主机时,我们必须使用此过程。
确保您的代理知道其真正的完全限定主机名;使用“hostname”命令来确保它是您所期望的。
答案2
我遇到了类似的问题。我设置了一个 vagrant 环境,其中包含一个 puppetmaster 和多个客户端。问题是,当我销毁并创建 puppetmaster 时,客户端会将新的 puppetmaster 检测为冒名顶替者。
在客户端上删除/etc/puppet/ssl
即可解决问题。
请记住,您的 SSL 配置将被缓存,因此重新启动木偶大师/etc/puppet/ssl
如果您决定在该主机上删除您的内容,则需要:
sudo /etc/init.d/puppetmaster restart