Chef infra 如何正确配置Berk以避免证书问题?

Chef infra 如何正确配置Berk以避免证书问题?,chef-infra,berkshelf,Chef Infra,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连接到服务器似乎可以很好地使用knife,因为我可以正确运行所有命令。但是当我运行 伯克斯上传

我在以下版本中使用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连接到服务器似乎可以很好地使用knife,因为我可以正确运行所有命令。但是当我运行

伯克斯上传

命令我得到这个错误

Ridley::Errors::ClientError: SSL_connect returned=1 errno=0 state=error: certificate verify failed
刀子命令也有这个问题,但我在默认路径~/.chef/trusted_certs中复制证书时解决了这个问题/

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

伯克斯供应商

所以基本上,我必须不断地设置和取消设置这个变量,才能正常工作,正如你所能想象的,这是非常烦人的

我如何正确配置该工具架以使其工作

谢谢,
Michele.

不幸的是,Berkshell使用了自己的HTTP客户端层,因此它(还?)不支持Chef的
受信任的\u certs/
文件夹。这意味着您必须以老式的OpenSSL方式使用
$SSL\u CERT\u FILE
$SSL\u CERT\u DIR
进行操作。正如Tensibai提到的,您需要以某种方式为OpenSSL构建一个新的信任数据库。这不是一个直接的等价关系,但我要提醒大家的是,Policyfile工具确实支持
受信任的证书/

可能的副本,请参阅一式两份的答案,主要是您必须将证书粘贴到cacert.pm中,并将SSL_cert_文件设置到此cacert.pem中,以使这两种方法都起作用。将证书添加到第二个答案所指的文件中是有效的。我不确定这两件事是否有关联。谢谢。我在/opt/chefdk/embedded/ssl/certs/cacert.pem中添加了证书内容,正如在Tensibal文章中所描述的那样,它起到了作用。谢谢。不建议这样做,下次升级chefdk时将撤消。当然,我理解。我希望在下一个版本中会有更新。
/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)