Как правильно настроить berks, чтобы избежать проблем с сертификатами?

Я использую chefDK со следующими версиями:

Chef Development Kit Version: 0.17.17
chef-client version: 12.13.37
delivery version: master (f68e5c5804cd7d8a76c69b926fbb261e1070751b)
berks version: 4.3.5
kitchen version: 1.11.1

Соединение шеф-повара с сервером работает нормально с ножом, так как я могу правильно выполнять все команды. Но когда я запускаю

Беркс загрузить

команда, я получаю эту ошибку

Ridley::Errors::ClientError: SSL_connect returned=1 errno=0 state=error: certificate verify failed

У меня была эта проблема также с командой ножа, но я решил ее, скопировав свой сертификат по пути по умолчанию ~/.chef/trusted_certs/

Я могу решить проблему с сертификатом, установив переменную среды SSL_CERT_FILE, указывающую на файл сертификата, но я не могу использовать это постоянно, потому что, если он установлен, у меня есть другая ошибка при выполнении команды

продавец берков

/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/httpclient-2.7.2/lib/httpclient/ssl_socket.rb:46:in `connect': SSL_connect returned=1 errno=0 state=error: certificate verify failed (Faraday::SSLError)

Так что в основном мне приходится постоянно устанавливать и сбрасывать эту переменную, чтобы работать правильно, что, как вы можете себе представить, довольно раздражает.

Как правильно настроить berkshelf для работы?

Спасибо, Мишель.


person Mikyjpeg    schedule 23.09.2016    source источник
comment
Возможный дубликат я установил chef-dk и начал использовать berkshelf, но загрузка berks не удалась   -  person Tensibai    schedule 23.09.2016
comment
Посмотрите ответы в двух экземплярах, в основном вам нужно будет вставить свой сертификат в cacert.pm и установить SSL_CERT_FILE для этого cacert.pem, чтобы оба метода работали.   -  person Tensibai    schedule 23.09.2016
comment
Сработало добавление сертификата в файл, указанный вторым ответом. Я не был уверен, что эти две вещи связаны. Спасибо.   -  person Mikyjpeg    schedule 25.09.2016


Ответы (1)


К сожалению, Berkshelf использует свои собственные слои HTTP-клиента, поэтому он (пока?) не поддерживает папку Chef trusted_certs/. Это означает, что вы должны делать что-то в стиле старой школы OpenSSL с $SSL_CERT_FILE или $SSL_CERT_DIR. Как упомянул Тенсибай, вам так или иначе потребуется создать новую базу данных доверия для OpenSSL. Это не прямая эквивалентность, но я упомяну для протокола, что инструменты Policyfile действительно поддерживают trusted_certs/.

person coderanger    schedule 24.09.2016
comment
Я добавил содержимое сертификата в /opt/chefdk/embedded/ssl/certs/cacert.pem, как описано в сообщении, указанном Tensibal, и это сработало. Спасибо. - person Mikyjpeg; 25.09.2016
comment
Это не рекомендуется и будет отменено при следующем обновлении chefdk. - person coderanger; 26.09.2016
comment
Конечно, я понимаю. Я надеюсь, что в следующих версиях будет обновление по этому поводу. - person Mikyjpeg; 26.09.2016