我使用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?
谢谢, 米歇尔。
答案 0 :(得分:0)
不幸的是,Berkshelf使用自己的HTTP客户端层,因此它不支持Chef struct X
文件夹。这意味着您必须使用trusted_certs/
或$SSL_CERT_FILE
来完成旧式OpenSSL方式。正如Tensibai所提到的,您需要以某种方式为OpenSSL构建新的信任数据库。它不是直接的等价,但我会在记录中提到Policyfile工具支持$SSL_CERT_DIR
。