我想知道 Chef 是否可以使用 remote_file
资源形成一个使用自签名证书的 https 源。好像做不到。文档未提及证书并提供禁用 SSL 检查的配置。
如果你有一个带有自签名证书的 https 站点,例如可以使用具有的配方复制
remote_file "/tmp/image.png" do
source "https://mywebsite.com/image.png"
end
你当然可以使用knife
来获取目标节点上的证书,例如如下
vagrant@devops:~$ knife ssl fetch https://mywebsite.com/
WARNING: No knife configuration file found
WARNING: Certificates from mywebsite.com will be fetched and placed in your trusted_cert directory (/home/vagrant/.chef/trusted_certs).
Knife has no means to verify these are the correct certificates. You should verify the authenticity of these certificates after downloading.
这似乎没什么作用。 Chef 将继续显示消息
==> default: [2015-06-08T06:30:33+00:00] ERROR: remote_file[/tmp/image.png] (jenkins::remote_file_test line 1) had an error: OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
也许这是一个错误? Chef 似乎忽略了受信任的证书。
有解决办法吗?我们能否让 Chef 以某种方式信任该证书?
更新 Tensibai 给出了正确答案。查看他的评论。
最佳答案
根据 tensibai 的技术(在原始问题中发表评论)我有以下安装证书的方法:
bash 'pull certificate from gitlab' do
code <<-EOH
openssl s_client -connect hqdevgit01.my.lan:443 -showcerts | openssl x509 -outform PEM > /opt/chef/embedded/ssl/certs/gitlab.pem
cat /opt/chef/embedded/ssl/certs/gitlab.pem >> /opt/chef/embedded/ssl/certs/cacert.pem
EOH
not_if { ::File.exists?('/opt/chef/embedded/ssl/certs/gitlab.pem') }
end
我下载 pem 并将其存储在一个单独的文件中,并在将来触发该存在的操作。我想我应该检查 cacert.pem,但如果证书被附加多次,似乎没有太大问题。
最终,我需要为我的内部工具服务器获取一些证书 - 但该组织规模很小,并且没有明确指示我们将在 6 个月内做什么和在哪里。对于我的短期需求(我们 100% 在防火墙后面),这个解决方案很好(不理想)。
关于ssl - 来自带有自签名证书的 https 站点的 Chef remote_file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30702620/