Как установить путь ca-bundle для OpenSSL в ruby

Я столкнулся с проблемой в ruby, когда сертификат SSL не может быть проверен OpenSSL. Я думаю, это вызвано тем, что скрипт не знает ca-bundle.pem. Есть ли возможность настроить путь к ca-bundle.pem вручную?


person Coxer    schedule 07.02.2013    source источник


Ответы (3)


OpenSSL использует переменную среды SSL_CERT_FILE. Вы можете установить его в своем ruby-скрипте, используя что-то вроде первого require, который использует OpenSSL:

ENV['SSL_CERT_FILE'] = '/path/to/ca-bundle.pem'

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

person Daniel Roethlisberger    schedule 10.02.2013

Вы можете сделать это следующим образом:

SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
person Kumar Akarsh    schedule 07.02.2013
comment
Куда мне это положить? к вашему сведению, я использую Windows - person Coxer; 07.02.2013
comment
Это должно быть помещено в сам рубиновый код. Не знаю, как это сделать в системе Windows. в качестве альтернативы вы можете полностью отключить проверку сертификата, выполнив: OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE - person Kumar Akarsh; 07.02.2013
comment
да, я не люблю отключать проверку... из соображений безопасности. Есть ли константа, которую можно установить для модуля OpenSSL? OpenSSL::SSL::XX = путь ??? - person Coxer; 07.02.2013

Это все потому, что SSL_CERT_FILE имеет неправильное значение, значение, которое у него может не существовать. Итак, вы должны установить его значение в файле сертификата как ENV['SSL_CERT_FILE]='path/to/ca-bundle.p'. Если вы используете Rails, вы можете поместить его в инициализатор. Если вам нужен гем, который сделает все за вас, используйте https://github.com/stevegraham/certified. .

person Ashish Bista    schedule 13.05.2016