【问题标题】:Use Berkshelf with custom CA certificate将 Berkshelf 与自定义 CA 证书一起使用
【发布时间】:2018-12-19 07:50:53
【问题描述】:

我在本地有一个自定义 Chef 服务器,其 TLS 证书由我们自己的 CA 服务器签名。我将 CA 证书添加到 .chef/trusted_certs,现在 knife ssl verify 工作正常。

但是当我尝试使用 Berksfile 上传食谱时,我遇到了以下错误:

$ berks upload
E, [2016-03-26T15:02:18.290419 #8629] ERROR -- : Ridley::Errors::ClientError: SSL_connect returned=1 errno=0 state=error: certificate verify failed
E, [2016-03-26T15:02:18.291025 #8629] ERROR -- : /Users/chbr/.rvm/gems/ruby-2.3-head@global/gems/celluloid-0.16.0/lib/celluloid/responses.rb:29:in `value'

我已尝试将 CA 证书附加到 /ops/chefdk/embedded/ssl/certs/cabundle.pem,但没有任何区别。

【问题讨论】:

    标签: ssl chef-infra berkshelf


    【解决方案1】:

    创建一个自定义 CA 捆绑文件,然后在您的环境中设置 $SSL_CERT_FILE(或 $SSL_CERT_DIR,如果您想使用该格式)。

    【讨论】:

      【解决方案2】:

      使用--no-ssl-verify。 Berkshelf 不尊重厨师的可信证书。

      或者,有一个选项可以在 berks 配置文件中指定。

      【讨论】:

      • 我更喜欢更安全的解决方案,让 Berks 信任我的自定义 CA 证书。
      • 好吧,那你只能等着/求助berkshelf#1470了。
      【解决方案3】:

      不要忽略证书验证。这不是最安全的选择,尤其是有消息称攻击者最近在 Node Package Manager 等地方插入了恶意软件。您可以轻松配置 Berkshelf 以信任您信任 Chef 的相同证书。

      在您的 ~/chef-repo/.berkshelf/config.json 文件中,确保 ca_path 设置为指向您的 Chef 受信任证书,如下所示(假设您的 Chef 存储库位于 ~/chef-repo)

      {
        "ssl": {
          "verify": true,
          "ca_path": "~/chef-repo/.chef/trusted_certs"
        }
      }
      

      然后,使用刀管理您的 Chef 证书(如下所示):

      $ cd ~/chef-repo
      $ knife ssl fetch https://supermarket.chef.io/
      $ knife ssl fetch https://my.chef.server.example.org/
      

      您信任 Chef 的所有证书也将被 Berks 信任。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-28
        • 1970-01-01
        • 2020-07-30
        • 2013-11-26
        • 1970-01-01
        • 2017-01-14
        • 1970-01-01
        相关资源
        最近更新 更多