Answers:
有两种方法可以达到目的:
Chef具有trusted_dir
允许将证书添加到受信任列表的功能。该文档有很多关于它的细节。将您的CA证书添加到此目录将解决此问题。knife
根据自己的文档,它的路径也略有不同
Chef在中使用其自己的CA证书列表/opt/chef/embedded/ssl/certs/cacert.pem
。您可以在此列表的末尾添加CA证书以信任它。
第二个选项的优点是允许您导出SSL_CERT_FILE
指向Chef 的环境变量,cacert.pem
以允许使用openssl
库的大多数工具知道您的CA证书。
对于厨师服务器(或在食谱中用作目标的其他服务器)上的自签名证书的情况,knife ssl_fetch
将允许所有刀具命令都起作用。
要将服务器证书添加到上述情况2的cacert.pem中,可以使用以下命令:
# For a self signed CA certiticate
openssl s_client -showcerts -connect <YOUR_CHEF_SERVER>:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >> /opt/chefdk/embedded/ssl/certs/cacert.pem
# For an internal CA signed certificate:
openssl s_client -showcerts -verify 5 -connect <YOUR_CHEF_SERVER>:443 </dev/null 2>/dev/null | awk '/BEGIN/,/END/{if(/BEGIN/){a++}; certs[a]=(certs[a] "\n" $0)}; END {print certs[a]}' >> /opt/chefdk/embedded/ssl/certs/cacert.pem
export SSL_CERT_FILE=/opt/chefdk/embedded/ssl/certs/cacert.pem
openssl命令包含在Chef-dk中,因此也可以在Windows下完成。将路径更改为c:\opscode\
而不是/opt/
。要导出环境变量,请在命令中使用set SSL_CERT_FILE=...
(/P
用于将其永久添加到您的环境中)。