我正在使用"knife configure -i"配置命令配置 knife.rb 来设置 Chef 工作站。正确回答所有问题后,我收到以下错误:
ERROR: SSL Validation failure connecting to host: 172.xx.x.xx - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
ERROR: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
我的目标是永远禁用此SSL证书验证,并使用刀具实用程序引导我的所有节点。
升级到版本 12.xx 后,我在运行 chef-client 时遇到了同样的问题。解决步骤:
- 从服务器拉取 crt。在节点上运行:刀 SSL 获取 -s https://yourchefserver01.com:443注意:如果 fetch 不起作用,请从 yourchefserver01.com:/var/opt/chef-server/nginx/ca/yourchefserver01.com.crt 复制到客户端:/root/.chef/trusted_certs/yourchefserver01.com.crt
- 验证它是否拉取:刀 SSL 检查 -S https://yourchefserver01.com:443
- export SSL_CERT_FILE="/root/.chef/trusted_certs/yourchefserver01.com.crt"
- 运行厨师客户端
您的问题是厨师服务器证书的验证。在 Chef 服务器上安装正确的证书
或将您的 Chef 服务器证书(位于 /etc/chef-server/hostname.crt
中)添加到您的工作站cacert.pem
(默认情况下位于 <install path>/opscode/chef/embedded/ssl/certs
中)。
在 chef 12 中,您还必须在节点上分发它以验证 chef API 服务器,否则您将在每次 chef-client 运行开始时收到有关它的警告。
问题似乎与 .pem 验证器有关。 您的验证配置错误。尝试从 Chef 服务器创建新的验证密钥,并将其放在节点下。
如果您在内部运行 Chef Server,从长远来看,在 Chef Server(或负载均衡器)上安装第三方 SSL 证书(例如 Verisign)会更容易。 chef-client
和knife
附带OpenSSL,它将自动信任有效的第三方证书,无需在每个节点上进行配置。
请不要关闭 SSL 证书验证。SSL 验证是一种额外的保护,您信任的对 Chef 节点具有根访问权限的服务器是真正的 Chef 服务器,而不是中间人攻击。