我在使用 puppet 3.3.1 (puppet opensource) 在主服务器和从服务器上设置主/节点方案时遇到了麻烦。从服务器位于 Windows 和 SLES 计算机上。主服务器也位于 SLES 计算机上。
问题:我第一次启动代理时,它会创建一个新证书并将其发送给主服务器。在主服务器上,我可以看到证书请求并接受它。当我再次启动代理时,会出现以下消息:
Running Puppet agent on demand ...
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: c
ertificate verify failed: [certificate signature failure for /CN=my-master.com]
Info: Retrieving plugin
Error: /File[C:/Dokumente und Einstellungen/All Users/Anwendungsdaten/PuppetLabs
/puppet/var/lib]: Failed to generate additional resources using 'eval_generate':
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certifica
te verify failed: [certificate signature failure for /CN=my-master.com]
Error: /File[C:/Dokumente und Einstellungen/All Users/Anwendungsdaten/PuppetLabs
/puppet/var/lib]: Could not evaluate: SSL_connect returned=1 errno=0 state=SSLv3
read server certificate B: certificate verify failed: [certificate signature fa
ilure for /CN=my-master.com] Could not retrieve file metadata f
or puppet://my-master.com/plugins: SSL_connect returned=1 errno
=0 state=SSLv3 read server certificate B: certificate verify failed: [certificat
e signature failure for /CN=my-master.com]
Error: Could not retrieve catalog from remote server: SSL_connect returned=1 err
no=0 state=SSLv3 read server certificate B: certificate verify failed: [certific
ate signature failure for /CN=my-master.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 se
rver certificate B: certificate verify failed: [certificate signature failure fo
r /CN=my-master.com]
问题是它本来可以工作,但现在却不行了。我已经尝试了以下步骤来解决这个问题:
- 同步所有三台服务器上的时钟/日期。
- 删除了主服务器上 /var/lib/puppet/.puppet/ssl 中的所有内容
- 删除节点上 /var/lib/puppet/ssl 中的所有内容
- 重启主服务多次。
- 两个节点(SLES 和 Windows)上出现相同的错误
- Puppet 代理证书验证失败没有解决问题
答案1
找到每一方认为是活跃的 CA
- 在主人身上
puppet master --configprint cacert
- 在代理上
puppet agent --configprint cacert
确保代理信任主服务器用于签名的同一 CA。如有疑问,请替换代理上的副本。然后它应该接受新签名的证书。
为了获得清白,你应该只
- 删除代理上的所有
$(facter fqdn).pem
文件$ssldir
puppet cert clean <fqdn>
在主人身上
然后,代理应该再颁发另一个 CSR,并且如果其 CA 副本确实同步,则它最终应该接受该证书。