将Berkshelf与自定义CA证书一起使用

时间:2016-03-26 14:07:23

标签: ssl chef berkshelf

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

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

$ 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,但没有任何区别。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

或者,可以选择在berks配置文件中指定它。

答案 2 :(得分:0)

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

在〜/ chef-repo / .berkshelf / config.json文件中,确保ca_path设置为指向Chef可信证书,例如这样(假设您的Chef repo位于〜/ chef-repo)< / p>

{
  "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信任。