chef-infra - 如何正确配置berks以避免证书问题?

标签 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 工作正常,因为我可以正确运行所有命令。但是当我运行

berks upload

命令我收到此错误

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才能工作?

谢谢, 米歇尔。

最佳答案

不幸的是,Berkshelf 使用自己的 HTTP 客户端层,因此它(还?)不支持 Chef 的 trusted_certs/ 文件夹。这意味着您必须使用 $SSL_CERT_FILE$SSL_CERT_DIR 以老式 OpenSSL 方式执行操作。正如 Tensibai 提到的,您需要以某种方式为 OpenSSL 构建一个新的信任数据库。这不是直接等价的,但我要记录一下,Policyfile 工具确实支持 trusted_certs/

关于chef-infra - 如何正确配置berks以避免证书问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39660990/

相关文章:

python - 将嵌套 JSON 的 "dict"值向上拉一层

chef-infra - 是否有相当于 Berkshelf 的产品,但用于 Puppet 模块?

chef-infra - 我怎样才能让 Chef 重新启动节点,并从它停止的地方拿起 Recipe ?

sql-server - SQL Server 在安装 witch chocolatey 时无法授权用户(通过 chef)

chef-infra - Vagrant 配置因关闭流而失败 (IOError)

ruby - Chef-solo 无法找到 Chef::Resource::PythonPip

chef-infra - 使用 Berkshelf 时无法找到 Recipe 模板

ruby - 如何解决 mixlib-shellout gem 版本冲突?

chef-infra - 创建客户端时出现vagrant up错误? Chef-stacktrace:OpenSSL::PKey::RSAError:需要私钥

chef-infra - Chef - Foodcritic FC019 误报