【问题标题】:Bootstraping chef client on the node itself在节点本身上引导厨师客户端
【发布时间】:2015-08-07 04:10:58
【问题描述】:

我正在尝试编写一个将在启动过程中运行并安装 Chef 客户端的脚本。 validation.pem和client.rb文件放在/etc/chef文件夹下,这里的validation.pem取自chef服务器,是organization-validation.pem文件。我已经创建了此 VM 的映像并用于创建另一个 VM。这个脚本运行 chef-client 并且出于某种原因我得到了这个:

Creating a new client identity for node1 using the validator key.
[2015-08-06T19:52:16+00:00] ERROR: SSL Validation failure connecting to host:     xxx.xxx.xxx.xxx - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

Running handlers:
[2015-08-06T19:52:16+00:00] ERROR: Running exception handlers
Running handlers complete
[2015-08-06T19:52:16+00:00] ERROR: Exception handlers complete
Chef Client failed. 0 resources updated in 2.966424961 seconds
[2015-08-06T19:52:16+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-    
stacktrace.out
[2015-08-06T19:52:16+00:00] ERROR: SSL_connect returned=1 errno=0 state=SSLv3     
read server certificate B: certificate verify failed
[2015-08-06T19:52:16+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

另外,我不能真正使用刀,因为它没有配置为厨师客户端没有安装开始。我使用了错误的证书吗?我做错了什么?

【问题讨论】:

  • 我正在尝试做同样的事情并遇到同样的问题。

标签: chef-infra


【解决方案1】:

我猜您使用的是自签名 SSL 证书。从 Chef 12 开始,Chef 不再信任这些证书。

您可以将 ssl_verify_mode :verify_none 添加到您的 client.rb 中,以检查它是否有效。

解决此问题的正确方法是将证书添加到/etc/chef/trusted_certs

【讨论】:

  • 感谢您的回复。应该将什么证书添加到 /etc/chef/trusted_certs?
  • 我试着照你说的做,但我仍然得到一些现在对我来说没有意义的错误:Generated at 2015-08-06 20:20:23 +0000 OpenSSL::X509:: CertificateError:嵌套 asn1 错误 /opt/chef/embedded/apps/chef/lib/chef/http/ssl_policies.rb:81:in each' ---- /opt/chef/embedded/apps/chef/lib/chef/application/client.rb:382:in run_application' /opt/chef/embedded/apps/chef/lib/chef/application .rb:60:in run' /opt/chef/embedded/apps/chef/bin/chef-client:26:in ' /usr/bin/chef-client:55:in load' /usr/bin/chef-client:55:in
    '
  • 您签署了证书吗?创建证书的具体步骤是什么?
  • 我使用的证书是在厨师服务器上创建管理员用户时创建的组织验证证书。
  • 您应该能够在/var/opt/opscode/nginx/ca/HOSTNAME.crt 中找到正确的证书。你能试试吗?