如何正确配置berk以避免证书问题?

时间:2016-09-23 12:38:59

标签: chef berkshelf

我使用chefDK使用以下版本:

Chef Development Kit Version: 0.17.17
chef-client version: 12.13.37
delivery version: master (f68e5c5804cd7d8a76c69b926fbb261e1070751b)
berks version: 4.3.5
kitchen version: 1.11.1

与刀具的Chef连接似乎可以正常工作,因为我可以正确运行所有命令。但是当我运行

  

berks上传

命令我收到此错误

Ridley::Errors::ClientError: SSL_connect returned=1 errno=0 state=error: certificate verify failed

我在使用knife命令时遇到了这个问题,但是当我在默认路径中复制证书时我解决了它〜/ .chef / trusted_certs /

我可以通过证书设置指向证书文件的环境变量SSL_CERT_FILE解决问题,但我不能永久使用它,因为如果设置了我运行命令时出现另一个错误

  

berks vendor

/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/httpclient-2.7.2/lib/httpclient/ssl_socket.rb:46:in `connect': SSL_connect returned=1 errno=0 state=error: certificate verify failed (Faraday::SSLError)

所以基本上我必须不断设置和取消设置该变量才能正常工作,你可以想象这很烦人。

如何正确配置berkshelf?

谢谢, 米歇尔。

1 个答案:

答案 0 :(得分:0)

不幸的是,Berkshelf使用自己的HTTP客户端层,因此它不支持Chef struct X文件夹。这意味着您必须使用trusted_certs/$SSL_CERT_FILE来完成旧式OpenSSL方式。正如Tensibai所提到的,您需要以某种方式为OpenSSL构建新的信任数据库。它不是直接的等价,但我会在记录中提到Policyfile工具支持$SSL_CERT_DIR