Ошибка установки пакета с ошибкой проверки сертификата SSL

Когда я запускаю bundle install для моего проекта Rails 3 на Centos 5.5, он терпит неудачу с ошибкой:

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 
read server certificate B: certificate verify failed 
(https://bb-m.rubygems.org/gems/multi_json-1.3.2.gem)
An error occured while installing multi_json (1.3.2), and Bundler cannot continue.
Make sure that `gem install multi_json -v '1.3.2'` succeeds before bundling.

Когда я пытаюсь установить драгоценный камень вручную (через gem install multi_json -v '1.3.2'), он работает. Та же проблема возникает и с несколькими другими драгоценными камнями. Я использую RVM (1.12.3), ruby ​​1.9.2, bundler 1.1.3.

Как это исправить?

Ответ 1

Обновление

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

re: через Ownatik снова сбой установки пакета с ошибкой проверки сертификата SSL

gem update --system

Мой ответ по-прежнему верен и оставлен ниже для справки, если это не работает для вас.


Честно говоря, лучшим временным решением является

[...] используйте не-ssl-версию rubygems в вашем gemfile как временное обходное решение.

через пользователя Ownatik

то, что они означают, находится в верхней части Gemfile в вашем каталоге каталогов приложений rails

source 'https://rubygems.org'

к

source 'http://rubygems.org'

обратите внимание, что вторая версия - http, а не http s

Ответ 2

Замените источник gsm ssl не-ssl в качестве временного решения:

Ответ 3

Причина - старые рубигемы. Сначала вам необходимо обновить системную часть, используя источник non ssl:

gem update --system --source http://rubygems.org/ (временное обновление системной части с использованием не-ssl-соединения).

Теперь вы готовы использовать gem update.

Ответ 4

Если вы находитесь на Mac и используете недавнюю версию RVM (~ 1.20), для меня работала следующая команда.

rvm osx-ssl-certs update

Ответ 5

Теперь эта проблема должна быть исправлена. Обновите rubygems (gem update --system), убедитесь, что openssl находится на последней версии вашей ОС или попробуйте, чтобы эти советы все еще не работали: http://railsapps.github.com/openssl-certificate-verify-failed.html

Ответ 6

Временное решение (как указано в Ownatik):

Создайте или измените файл с именем .gemrc в своем домашнем пути, включая строку :ssl_verify_mode: 0

Это предотвратит проверку поставщиком SSL сертификатов SSL при попытке установить их.

Для устройств * nix "домашний путь" означает ~/.gemrc. Вы также можете создать /etc/gemrc, если хотите. Для Windows XP "домашний путь" означает c:\Documents and Settings\All Users\Application Data\gemrc. Для Windows 7, C:\ProgramData\gemrc

Ответ 7

В windows7 вы можете скачать файл cacert.pem из здесь и установить environementvariable SSL_CERT_FILE в путь, где вы храните сертификат, например

SET SSL_CERT_FILE="C:\users\<username>\cacert.pem"

или вы можете установить переменную в script следующим образом: ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"

Заменить < имя пользователя > с вашим собственным именем пользователя.

Ответ 8

Реальное решение этой проблемы, если вы используете RVM:

  • Обновить rubygems: gem update --system
  • Используйте RVM для обновления сертификатов SSL: rvm osx-ssl-certs update all

Совет чата до этого совета в проекте RailsApps!

Ответ 9

Для тех из вас, у которых рубин установлен через RVM и требуется быстрое исправление (предпочитая не читать по запросу Бруно), просто попробуйте следующее:

rvm remove 1.9.x (or whatever version of ruby you are using)
rvm pkg install openssl
rvm install 1.9.2 --with-openssl-dir=$rvm_path/usr

Для более подробной информации, вот ссылка, где я нашел решение.

http://railsapps.github.com/openssl-certificate-verify-failed.html

Кстати, мне не пришлось прикасаться к моим сертификатам на Ubuntu.

Лучше всего, это не обходной путь. Он будет загружать драгоценные камни через SSL и сбой, если есть проблема, подобная человеку в середине что намного лучше, чем просто отключить безопасность.

Ответ 10

Это исправлено

http://guides.rubygems.org/ssl-certificate-update/

Теперь, когда RubyGems 2.6.x был выпущен, вы можете вручную обновить эту версию.

Загрузить https://rubygems.org/downloads/rubygems-update-2.6.7.gem

Загрузите файл в каталог, который вы можете позже указать (например, корень вашего жесткого диска C:)

Теперь, используя командную строку:

C:\>gem install --local C:\rubygems-update-2.6.7.gem
C:\>update_rubygems --no-ri --no-rdoc

После этого gem -version сообщит о новой версии обновления.

Теперь вы можете безопасно удалить rubygems-update gem:

C:\>gem uninstall rubygems-update -x

Ответ 11

Вы можете загрузить список сертификатов CA с сайта curl на http://curl.haxx.se/ca/cacert.pem

Затем установите переменную среды SSL_CERT_FILE, чтобы сообщить Ruby о ее использовании. Например, в Linux:

$ SSL_CERT_FILE=~/cacert.pem bundle install

(Ссылка: https://gist.github.com/fnichol/867550)

Ответ 12

Простая инструкция для копирования папок, приведенная здесь о файле .pem

https://gist.github.com/luislavena/f064211759ee0f806c88

Ошибка проверки сертификата

Если вы прочитали предыдущие разделы, вы будете знать, что это значит (и позорить) на вас, если вы этого не сделали.

Нам нужно скачать AddTrustExternalCARoot-2048.pem. Откройте командную строку и введите:

C: > драгоценный камень, который рубигем C:/Ruby21/lib/ruby/2.1.0/rubygems.rb Теперь найдите этот каталог. Внутри того же окна введите часть пути до расширения файла, но вместо этого используйте обратную косую черту:

C: > start C:\Ruby21\lib\ruby ​​\ 2.1.0\rubygems Это откроет окно проводника в указанном нами каталоге.

Шаг 3: Скопируйте новый сертификат доверия

Теперь найдите каталог ssl_certs и скопируйте файл .pem, полученный с предыдущего шага.

Он будет указан в других файлах, таких как GeoTrustGlobalCA.pem.

Ответ 13

та же проблема, но с другим драгоценным камнем здесь:

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 
read server certificate B: certificate verify failed 
(https://bb-m.rubygems.org/gems/builder-3.0.0.gem)
An error occured while installing builder (3.0.0), and Bundler cannot continue.
Make sure that `gem install builder -v '3.0.0'` succeeds before bundling.

временное решение: gem install builder -v '3.0.0' позволяет продолжить bundle install

Ответ 14

Вот как вы исправляете эту проблему в Windows:

загрузите файл .perm, затем установите командную строку SSL_CERT_FILE

https://gist.github.com/fnichol/867550

Ответ 15

Я получаю немного другую ошибку, хотя, возможно, связанную, на Ubuntu 12.04:

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=unknown state: sslv3 alert handshake failure (https://d2chzxaqi4y7f8.cloudfront.net/gems/activesupport-3.2.3.gem)
An error occured while installing activesupport (3.2.3), and Bundler cannot continue.
Make sure that `gem install activesupport -v '3.2.3'` succeeds before bundling.

Это происходит, когда я запускаю bundle install с source 'https://rubygems.org' в Gemfile.

Это проблема с OpenSSL на Ubuntu 12.04. См. Проблема с Rubygems № 319.

Чтобы исправить это, запустите apt-get update && apt-get upgrade на Ubuntu 12.04, чтобы обновить OpenSSL.

Ответ 16

Простейшее решение:

rvm pkg install openssl
rvm reinstall all --force

Voila!

Ответ 17

Мне удалось отследить это из-за того, что двоичные файлы, которые загружают rvm, не очень приятны с OS X OpenSSL, который является старым и больше не используется ОС.

Решением для меня было принудительное компиляцию при установке Ruby через rvm:

rvm reinstall --disable-binary 2.2

Ответ 18

Мое постоянное исправление для Windows:

  • Загрузите CACert, сохраните как C:\ruby\ssl_certs\GlobalSignRootCA.pem из http://guides.rubygems.org/ssl-certificate-update/

  • Создайте системную переменную с именем " SSL_CERT_FILE", установите значение C:\ruby\ssl_certs\GlobalSignRootCA.pem.

  • Повторите попытку: gem install bundler:

C:\gem sources
*** CURRENT SOURCES ***
https://rubygems.org/

C:\gem install bundler
Fetching: bundler-1.13.5.gem (100%)
Successfully installed bundler-1.13.5
1 gem installed

Ответ 19

спасибо to @Alexander.Iljushkin для:

gem update --system --source http://rubygems.org/

После этого пакет еще не сработал, и решение было следующим:

gem install bundler

Ответ 20

Я получал аналогичную ошибку. Вот как я решил это: в вашем каталоге путей проверьте Gemfile. Измените источник в gemfile на http вместо https и сохраните его. Это может установить пакетщик без сертификата SSL.

Ответ 21

Для Windows-машины проверьте версию gem с помощью

gem --version

Затем обновите свой камень следующим образом:

Загрузите файл в каталог, который вы можете позже указать (например, корень вашего жесткого диска C:)

Теперь, используя командную строку:

C:\>gem install --local C:\rubygems-update-1.8.30.gem
C:\>update_rubygems --no-ri --no-rdoc

Теперь установка пакета будет успешной без подтверждения проверки сертификата SSL.

Более подробная инструкция здесь

Ответ 22

Это сработало для меня:

  • скачать последний драгоценный камень на https://rubygems.org/pages/download
  • установите драгоценный камень с помощью gem install --local [path to downloaded gem file]
  • обновить драгоценные камни с помощью update_rubygems
  • убедитесь, что вы используете последнюю версию gem с gem --version

Ответ 23

Мне пришлось переустановить openssl:

brew uninstall --force openssl
brew install openssl

Ответ 24

Недавно я столкнулся с этой проблемой и выполнил шаги, описанные здесь здесь. Возможно, вы не будете указывать на правильный сертификат OpenSSL. После запуска:

rvm osx-ssl-certs status all
rvm osx-ssl-certs update all

и

export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

пакет завершился!

Ответ 25

Загрузите rubygems-update-2.6.7.gem.

Теперь, используя командную строку:

C:\>gem install --local C:\rubygems-update-2.6.7.gem
C:\>update_rubygems --no-ri --no-rdoc

После этого gem --version должен сообщить о новой версии обновления.

Теперь вы можете безопасно удалить rubygems-update gem:

C:\>gem uninstall rubygems-update -x
Removing update_rubygems
Successfully uninstalled rubygems-update-2.6.7

Ответ 26

Следует отметить, что если вы захватываете драгоценные камни из источника, которому доверяет сертификат SSL внутреннему центру сертификации (или вы подключаетесь к внешнему источнику через веб-прокси-сервер компании с проверкой SSL), укажите переменную env_vi_ERVER_FILE ваша цепочка сертификатов. Скорее всего, вам просто нужно экспортировать свой корневой сертификат из хранилища сертификатов (System Keychain на macOS) в доступное местоположение из вашей оболочки i.e.:

export SSL_CERT_FILE=~/RootCert.pem

Ответ 27

Если вы используете rails-assets

Если вы использовали https://rails-assets.org/ для управления вашими активами, никакие ответы вам не помогут. Даже преобразование в http не поможет.

Простейшее исправление использует этот источник вместо http://insecure.rails-assets.org. Это было упомянуто на странице .

Ответ 28

Единственное, что работало для меня в старой системе windows и версии ruby ​​1.9, - это загрузка файла cacert из http://guides.rubygems.org/ssl-certificate-update/

И затем под командой ниже перед запуском пакета установите

bundle config --global ssl_ca_cert /path/to/file.pem