由于需要,需在rhel4 上面安装puppet agent,第一次签名成功后,第二次运行还是报错,不管用puppet2.7的版本还是3.0的版本。
报错如下:
err: 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=master.com]
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run
err: Could not send report: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=master.com]

 

原因分析:

  • 谷歌查询好多说是时间同步,但是无法解决这个问题。
  • RHEL4使用的Openssl 版本为0.9.7a 这个是不支持SHA256的。由于使用的是puppet3.0.1服务端,而这个版本只支持SHA256,虽然在puppet3.1.0r2以解决这个问题,但是没有敢更新服务端,更新客户端版本后,客户端第一次运行
  1. #agent 
  2. puppet agent --test  
  3. #server 看到key 
  4. sudo puppet cert list --all 
  5.   "agent.com"   (MD5) E8:53:A3:80:E1:80:D8:2A:94:A3:EE:8E:6F:E9:E5:32 
  6. #server 签名后看到的 
  7. sudo puppet cert list --all 
  8. + "agent.com"   (SHA256) 5D:2A:82:D2:B4:FD:82:D7:20:EC:41:5F:FA:F8:EE:A8:90:95:AB:C0:69:6A:35:92:82:8F:03:36:9B:92:59:AB 

由此可以看到签名后变成SHA256,而客户端不支持,故报上面的错误。

解决方案两种:1.升级server端puppet到3.1.0r2以上或者2.7的版本。

2.升级RHEL4的openssl版本到0.9.8,既能解决问题,又能提高安全性。