【发布时间】:2015-06-08 06:40:03
【问题描述】:
我想知道 Chef 是否可以从使用自签名证书的 https 源中使用 remote_file 资源。好像没办法。文档未提及证书并提供禁用 SSL 检查的配置。
如果您有一个带有自签名证书的 https 站点,例如,可以使用具有的配方复制它
remote_file "/tmp/image.png" do
source "https://mywebsite.com/image.png"
end
您当然可以使用knife 来获取目标节点上的证书,例如如下
vagrant@devops:~$ Knife ssl fetch https://mywebsite.com/
警告:找不到刀配置文件
警告:来自 mywebsite.com 的证书将被提取并放置在您的trusted_cert 目录(/home/vagrant/.chef/trusted_certs)中。
Knife 无法验证这些证书是否正确。你应该 下载后验证这些证书的真实性。
这似乎没什么作用。厨师将继续显示消息
==> 默认值:[2015-06-08T06:30:33+00:00] 错误:remote_file[/tmp/image.png](jenkins::remote_file_test 第 1 行)有一个错误:OpenSSL::SSL ::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
也许这是一个错误?似乎 Chef 忽略了受信任的证书。
有解决办法吗?我们可以让 Chef 以某种方式信任证书吗?
更新 Tensibai给出了正确的答案。见他的评论。
【问题讨论】:
-
ssl_verify_mode = :verify_none in
/etc/chef/client.rb将允许您完全禁用它。看来,受信任的证书存储仅用于连接到厨师服务器,也是我现在验证的。现在,除了全局禁用验证之外,我没有看到其他方法。也许其他人有更好的答案。 -
您可以从 Chef 安装中获取 cacert.pem 文件,将您自己的自签名/内部 CA 证书插入此文件,然后使用说明书将其部署到您的节点。一旦证书在 cacert.pem(在 /opt/chef/embedded/ssl/certs 中),ssl 验证将起作用。
-
我更改了
client.rb,但消息仍然存在。这似乎不是一种解决方法。 -
我没有 CA 证书,因为我是自签名的。没有带有自签名证书的 CA。或者我应该把我的证书 pem 文件放在这个文件中吗?我可以将它“猫”附加到
cacert.pem吗? -
@Onno 是的,自签名证书可以被视为 CA(因为它是顶级证书)。是的,如果它是 base64 编码的,你可以
cat self-signed.pem >> cacert.pem
标签: ssl chef-infra