Есть несколько способов добиться результата:
У шеф-повара есть trusted_dir
возможность добавить сертификат в список доверенных. в документации много деталей об этом. Добавление сертификата CA в этот каталог решит проблему. knife
имеет также немного другой путь в соответствии с собственной документацией
Шеф-повар использует свой собственный список сертификатов CA в /opt/chef/embedded/ssl/certs/cacert.pem
. Вы можете добавить свой сертификат CA в конце этого списка, чтобы доверять ему.
Преимущество второго варианта состоит в том, что вы можете экспортировать переменную среды, SSL_CERT_FILE
указывающую на chef, cacert.pem
чтобы большинство инструментов, использующих openssl
библиотеку, знали ваш сертификат CA.
В случае самозаверяющего сертификата на сервере chef (или другом сервере, используемом в качестве цели в рецепте), knife ssl_fetch
все команды ножа будут работать.
Чтобы добавить сертификат сервера в cacert.pem для случая 2. выше, вы можете использовать следующую команду:
# 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
чтобы добавить ее в вашу среду навсегда) в вашей команде.