进行厨师客户端设置时出现 ssl 验证错误

ssl validation error coming while doing chef client setup

我是 Chef 的新手,在 Node1 上安装了 Chef 服务器 11,我已经在 Node2 上成功设置了工作站,当我获得用户列表时,我得到了所有用户列表

[root@Staging3 .chef]# knife user list
admin
root

但是当我发出 knife bootstrap 我得到以下错误。

[root@Staging3 .chef]# knife bootstrap 10.4.6.214 -x root -N slave1 --sudo
Doing old-style registration with the validation key at /opt/chef/chef-repo/.chef/chef-validator.pem...
Delete your validation key in order to use your user credentials instead

Connecting to X.X.X.X
root@X.X.X.X's password: 
X.X.X.X Starting first Chef Client run...
X.X.X.X Starting Chef Client, version 12.1.1
X.X.X.X Creating a new client identity for slave1 using the validator key.
X.X.X.X [2015-03-19T00:42:00+05:30] ERROR: SSL Validation failure connecting to host: staging4.akosha.com - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
X.X.X.X 
X.X.X.X ================================================================================
X.X.X.X Chef encountered an error attempting to create the client "slave1"
X.X.X.X ================================================================================
X.X.X.X 
X.X.X.X [2015-03-19T00:42:00+05:30] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
X.X.X.X Chef Client failed. 0 resources updated in 6.045009421 seconds
X.X.X.X [2015-03-19T00:42:00+05:30] ERROR: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
X.X.X.X [2015-03-19T00:42:00+05:30] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

我已经阅读了所有关于客户端设置的博客,但没有遇到任何解决方案,在此方面任何帮助将不胜感激....

我以为我的厨师工作站可能有问题,但事实并非如此

[root@Staging3 chef-repo]# knife ssl check -s https://staging4.akosha.com
Connecting to host staging4.akosha.com:443
Successfully verified certificates from `staging4.akosha.com'

这里有一些信息你可以看看:

https://docs.chef.io/chef_client_security.html

对于 Chef 12,您需要 运行 命令:

knife ssl fetch

或者,您可以使用以下设置在 knife.rb 文件中关闭 ssl 验证:

ssl_verify_mode    :verify_none

您的目标节点不知道您的 Chef 服务器证书,因此无法对其进行验证。

您必须将 chef-server 证书添加到客户端。

我认为关于 knife 没有将 trusted_certs 目录推送到 bootstraping 节点的错误仍然存​​在。

目前的解决方法,bootstrap 和 --node-ssl-verify-mode none 这样 chef 客户端将不会验证 ssl(它会将 ssl_verify_mode :verify_none 写入节点的 client.rb IIRC)

之后你就可以使用食谱来推送 chef-server 证书并配置 ssl 参数,例如 chef-client 食谱。

安装 chef-client

sudo knife client create chef-client -a -f "/etc/chef/client.pem" -e vi
knife bootstrap 192.168.yy.xxx -x vagrant -P vagrant --sudo

来自主厨服务器

scp /etc/chef/client.pem chef-server:/etc/chef/

在主厨服务器上

mkdir -p ~/.chef/trusted_certs
sudo cp /var/opt/opscode/nginx/ca/chef-server.crt ~/.chef/trusted_certs

在客户端上,将证书提取到同一位置

mkdir -p ~/.chef/trusted_certs
knife ssl fetch

如果失败,从客户端,运行

scp chef-server:/home/vagrant/.chef/trusted_certs/chef-server.crt /home/vagrant/.chef/trusted_certs/chef-server.crt

这不是必需的:

export SSL_CERT_FILE=/opt/chef/embedded/ssl/certs/cacert.pem

在客户端上,更新 /etc/chef/client.rb 。这一步避免了证书,以防厨师客户端仍然失败

ssl_verify_mode :verify_none

/etc/chef/client.rb 
log_level        :info
log_location     STDOUT
chef_server_url  "https://chef-server/organizations/admin"
validation_client_name "admin-validator"
ssl_verify_mode :verify_none

chef-client 应该可以工作

sudo knife ssl fetch

// adding
ssl_verify_mode    :verify_none

工作站的 knife.rb 文件对我有用。

那些使用 AWS ubuntu 的人,确保你在 knife.rb 文件

中使用你的 chef-server 的 public DNS