如何包含我的内部CA证书以在Chef中验证SSL交换?


15

我们确实使用内部证书颁发机构在我的公司中创建服务器证书。

我们还必须处理执行SSL侦听(MITM)的透明代理。

由于Chef不知道CA证书,我经常遇到SSL验证错误,有时它是围绕Chef本身的工具(berkshelf,knife;甚至是第一次与服务器对话时,chef客户本身,因为Chef 12默认启用SSL)。

问题是:如何使Chef知道我的CA证书以获得有效的SSL交换?

Answers:


13

有两种方法可以达到目的:

  1. Chef具有trusted_dir允许将证书添加到受信任列表的功能。该文档有很多关于它的细节。将您的CA证书添加到此目录将解决此问题。knife根据自己的文档,它的路径也略有不同

  2. 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用于将其永久添加到您的环境中)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.