在做厨师客户端设置时出现ssl验证错误

时间:2015-03-18 19:26:49

标签: validation ssl chef nodes

我对Chef很新,并且在Node1上安装了一个厨师服务器11,我已经在Node2上成功设置了工作站,当我获得用户列表时,我得到了所有用户列表

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

但是当我发出刀具引导时,我得到了以下错误。

[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'

4 个答案:

答案 0 :(得分:12)

您可以查看以下信息:

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

使用Chef 12,您需要运行命令:

knife ssl fetch

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

ssl_verify_mode    :verify_none

答案 1 :(得分:12)

您的目标节点不知道您的厨师服务器证书,并且无法验证它。

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

我认为关于刀子没有将trusted_certs目录推送到引导节点的问题仍然存在。

现在解决方法,使用--node-ssl-verify-mode none引导程序,以便主厨客户端不会验证ssl(它会将ssl_verify_mode :verify_none写入节点client.rb IIRC)

之后,您将能够使用食谱推送厨师服务器证书并使用chef-client食谱配置ssl参数。

答案 2 :(得分:3)

sudo knife ssl fetch

// adding
ssl_verify_mode    :verify_none

到工作站的knife.rb文件为我工作。

使用AWS ubuntu的人,请确保您在knife.rb文件中使用chef-server的公共DNS

答案 3 :(得分:1)

安装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

来自chef-server

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

在chef-server上

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

厨师 - 客户应该工作