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

250

Когда я запускаю 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.

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

  • 0
    Столкнувшись с той же проблемой. Но с другим гемом: Gem :: RemoteFetcher :: FetchError: возвращено SSL_connect = 1 errno = 0 состояние = SSLv3 чтение сертификата сервера B: сбой проверки сертификата ( bb-m.rubygems.org/gems/activeresource-3.2.3.gem )
  • 4
    У меня та же ошибка с теми же обстоятельствами. Я подозреваю, что, учитывая эти другие ответы, это проблема на стороне сервера.
Показать ещё 2 комментария
Теги:
ssl
rubygems
bundler
gem

28 ответов

319
Лучший ответ

Обновление

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

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

gem update --system

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


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

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

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

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

source 'https://rubygems.org'

к

source 'http://rubygems.org'

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

  • 1
    Я принимаю этот ответ, потому что это было то, что я сделал сначала. Позже я изменил свою стратегию развертывания. Теперь я запускаю связывание приложения на другом сервере, а затем копирую его (с гемами в каталоге vendor ) на сервер, о котором я писал в этом вопросе.
  • 6
    Это не сработало для меня. Ссылка, предоставленная @fbernier ниже, исправила это для меня.
Показать ещё 17 комментариев
220

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

  • 8
    OMG работал как шарм! Я на Windows 7 x64 за корпоративным прокси. Большое спасибо!
  • 14
    Я удивлен, что это не оценивалось выше, это было самое легкое быстрое решение.
Показать ещё 9 комментариев
159

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

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

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

  • 11
    Это было верное решение !!! Спасибо!
  • 5
    Действительно простое кроссплатформенное решение, позволяющее RubyGems позаботиться о деталях. Ницца.
Показать ещё 11 комментариев
115

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

rvm osx-ssl-certs update
  • 0
    Спасибо! Работал у меня на Mac OSX 10.8.5
  • 0
    Спасибо, у меня тоже сработало. Я пытался установить CocoaPods. рвм 1.22.15, OS X 10.8.5
Показать ещё 6 комментариев
55

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

  • 1
    Подтвердили, только что обновили самоцветы и это исправили!
  • 1
    Нужно обновить и упаковщик, чтобы он заработал (у меня на winxp работает rubygems 2.0.3 + bundler 1.3.2 + cygwin openssl 1.0.1e).
Показать ещё 2 комментария
51

Временное решение (как указано в 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

  • 3
    %USERPROFILE%\.gemrc также ищет gem в Windows.
  • 1
    Рекомендуемое расположение файла для Windows 8?
Показать ещё 4 комментария
15

В 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"

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

  • 1
    благодарю вас. Это был ответ. :)
  • 3
    Спасибо. Постоянное исправление здесь. guides.rubygems.org/ssl-certificate-update
Показать ещё 1 комментарий
14

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

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

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

  • 2
    rvm osx-ssl-certs update all что есть трюк! Спасибо!
  • 1
    rvm osx-ssl-certs update all у меня rvm osx-ssl-certs update all работало нормально. Не нужно делать шаг 1.
7

Для тех из вас, у которых рубин установлен через 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 и сбой, если есть проблема, подобная человеку в середине что намного лучше, чем просто отключить безопасность.

  • 0
    На странице, на которую вы ссылаетесь, есть «обходной путь» (сначала), а затем правильные решения. Было бы лучше, если бы в вашем ответе было сказано более четко. Тем не менее, использование сертификатов CA (через cacert.pem или $rvm_path/usr/ssl ) действительно правильный путь.
  • 1
    Бруно, решение, вероятно, будет немного отличаться в зависимости от того, какой вкус Unix использует человек. Похоже, что чтение ссылки будет необходимо.
Показать ещё 2 комментария
6

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

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
  • 0
    это работало отлично и ненавязчиво
5

Простая инструкция для копирования папок, приведенная здесь о файле .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.

5

Вы можете загрузить список сертификатов 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)

4

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

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

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

4

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

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

  • 7
    Вы также можете использовать не-ssl версию rubygems в вашем gemfile как временное решение.
  • 1
    Я сделал это, и это работает. Пока это достаточное решение.
Показать ещё 1 комментарий
3

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

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

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

gem install bundler

3

Мое постоянное исправление для 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
3

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

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

rvm reinstall --disable-binary 2.2
  • 0
    Это сработало для меня. Вам нужно заменить «2.2» на версию ruby, которую вы используете
3

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

rvm pkg install openssl
rvm reinstall all --force

Voila!

  • 2
    Что это на самом деле делает с моей системой?
3

Я получаю немного другую ошибку, хотя, возможно, связанную, на 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.

2

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

gem --version

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

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

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

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

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

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

2

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

1

Загрузите 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
  • 0
    Thansk @Aswathy, это самое простое решение, которое я нашел ...
1

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

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

и

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

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

1

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

brew uninstall --force openssl
brew install openssl
1

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

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

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

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

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

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

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

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

0

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

export SSL_CERT_FILE=~/RootCert.pem

Ещё вопросы

Сообщество Overcoder
Наверх
Меню