人偶代理证书验证失败


10

我已经设置了Puppet Master / Agent,并且已经成功在Master上签署了代理的证书。但是,当我运行时,出现如下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目录中的所有内容并辞职,我不知道该怎么办。


您的主人似乎使用的证书与客户信任的证书不同?船长的证书有变更吗?
Shane Madden 2013年

@ShaneMadden我不这么认为...我应该清理并吊销船长和客户证书吗?我根本没有弄过master证书,但是“ puppet cert list --all”的输出看起来像这样:+“ masterhost.domain.com”(SHA1)E1:F7:6A:21:CB: CD:xx:xx:xx:xx ... +“ agenthost.domain.com”(SHA256)5A:D9:7B:96:0B:FF:E4:87:58:AF:00:xx:xx:xx:xx :xx ..
John Smith

masterhost.domain.comhostname.domain.com您的问题相同,对吗?让我们尝试一下,我们将查看证书是否手动验证。运行openssl s_client -connect masterhost.domain.com:8140 -showcerts,然后将证书数据(以开头-----BEGIN CERTIFICATE-----,包括该行和结束证书行)复制到一个新文件中,然后运行openssl verify -CAfile /var/lib/puppet/ssl/certs/ca.pem /path/to/file/from/last/command,看看是否可以验证。
Shane Madden

@ShaneMadden似乎有些不对劲...。当我运行“ -showcerts”命令时,它给了我两个“ begin”和“ end”证书,因此我尝试首先将其中一个添加到新文件中,并得到这:/ var / lib / puppet / ssl / ca /​​ test:/CN=masterhost.domain.com错误7在0深度查找:证书签名失败22297:错误:0407006A:RSA例程:RSA_padding_check_PKCS1_type_1:块类型不是01: rsa_pk1.c:100:22297:错误:04067072:rsa例程:RSA_EAY_PUBLIC_DECRYPT:填充检查失败:rsa_eay.c:697:22297:错误:0D0C5006:asn1编码例程:ASN1_item_verify:EVP lib:a_verify.c:173:
约翰Smith Smith

真奇怪。听起来好像在发送连接中除了服务器证书之外的根证书,因此也许只需将第二个证书-showcerts的内容与的内容进行比较/var/lib/puppet/ssl/certs/ca.pem-它们应该相同?
Shane Madden 2013年

Answers:


13

重新创建整个客户端证书设置。这始终可以解决我们过去遇到的所有证书问题。以下说明假定您代理的主机名是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

这应该使代理重新下载人偶CA证书,然后重新申请其自己的证书。

过去,当更改人偶服务器和CA证书时,或者在重建具有相同主机名的主机时,我们必须使用此过程。

确保您的代理知道其真正的标准主机名;使用“主机名”命令来确保它是您期望的样子。


3
在师父上,puppet cert clean ‘agentName’为我工作。RHEL Puppet Enterprise ssl位置:/etc/puppetlabs/puppet/ssl。而且我已经同步了Master和Agent之间的时间。
Ivan Chau

如上所述,Puppet Enterprise和更新的Puppet 4将其证书存储在/ etc / puppetlabs / puppet / ssl下。/ var / lib / puppet / ssl位置适用于Puppet 2.x和3.x社区版本。
史蒂夫·希普韦

6

我有一个类似的问题。我已经建立了一个无所事事的环境,其中有一个人偶和几个客户。问题是当我销毁并创建人偶时,客户会将新的人偶检测为冒名顶替者。

删除/etc/puppet/ssl客户端可以解决问题。

请记住,您的ssl配置将被缓存,因此,如果您决定还删除该主机,则需要重新启动puppet master/etc/puppet/ssl

sudo /etc/init.d/puppetmaster restart

service puppetserver restart固定对我来说
spuder
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.