Вопрос по ssl, rubygems, ruby, ruby-on-rails, bundler – установка пакета не удалась с ошибкой проверки сертификата SSL

258

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

<code>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.
</code>

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

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

У меня та же ошибка с теми же обстоятельствами. Я подозреваю, что, учитывая эти другие ответы, это проблема на стороне сервера. asfallows
У меня была похожая проблема в Rails 5. Исправлена путем добавленияsource "https://rubygems.org'' в Gemfile и работающем 'gem update --system'. Вы можете найти больше информацииhere. Nesha Zoric
Столкнувшись с той же проблемой. Но с другим гемом: Gem :: RemoteFetcher :: FetchError: SSL_connect вернул = 1 errno = 0 состояние = SSLv3 прочитал сертификат сервера B: сбой проверки сертификата (bb-m.rubygems.org/gems/activeresource-3.2.3.gem) Sathish
Неша, это исправление сработало для меня. Спасибо! Martin Marino

Ваш Ответ

28   ответов
1

brew uninstall --force openssl
brew install openssl
4

rvm pkg install openssl
rvm reinstall all --force

Вуаля!

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

в вашем каталоге пути проверьте наличие Gemfile. Измените источник в файле gem на http вместо https и сохраните его. Это может установить пакет без выдачи сертификата SSL.

114

20), у меня сработала следующая команда.

rvm osx-ssl-certs update
что насчет linux?
На это также указывает сообщение об ошибке "... см. Bit.ly/ruby-ssl" ;.
Спасибо, у меня тоже сработало. Я пытался установить CocoaPods. рвм 1.22.15, OS X 10.8.5
Спасибо! Работал у меня на Mac OSX 10.8.5
Спасибо, это сработало, когда принятый ответ не удался. :)
3

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

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

gem install bundler

223

gem sources -r https://rubygems.org/ gem sources -a http://rubygems.org/
Я удивлен, что это не было оценено выше, это было самое быстрое и быстрое решение.
отлично работает на окнах
OMG работал как шарм! Я на Windows 7 x64 за корпоративным прокси. Большое спасибо!
Имхо, это даже не следует считать правильным ответом, потому что это открывает вашу систему для атак извне.
хорошее временное решение ... имейте в виду следующее: RubyGems был настроен для обслуживания драгоценных камней через следующие URL в своей истории: *gems.rubyforge.org (RubyGems 1.3.6 и более ранние версии) *rubygems.org       (RubyGems 1.3.7 - 1.8.25) *rubygems.org      (RubyGems 2.0.1 и новее)
1

download latest gem at https://rubygems.org/pages/download install the gem with gem install --local [path to downloaded gem file] update the gems with update_rubygems check that you're on the latest gem version with gem --version
4

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

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

3

Download the CACert , save as C:\ruby\ssl_certs\GlobalSignRootCA.pem from http://guides.rubygems.org/ssl-certificate-update/

Create system variable named "SSL_CERT_FILE", set to C:\ruby\ssl_certs\GlobalSignRootCA.pem.

Try again: 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
0

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

А затем выполните команду ниже перед запуском комплекта установки

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

кто установил ruby через 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.

Best of all, this isn't a workaround. It will download gems through SSL and fail if there if there is a problem like a man in the middle attack which is much better than just turning off security.

Я только что говорил о разнице между «обходным путем» на странице (:ssl_verify_mode: 0(которые открывают проблемы), в отличие от любого из 3 решений ниже, которые являются правильным способом решения этой проблемы.
На странице, на которую вы ссылаетесь, есть & quot; обходной путь & quot; (сначала), а затем правильные решения. Было бы лучше, если бы в вашем ответе было сказано более четко. Тем не менее, используя сертификаты CA (черезcacert.pem или же$rvm_path/usr/ssl) действительно правильный путь.
Бруно, решение, вероятно, будет немного отличаться в зависимости от того, какой вкус Unix использует человек. Похоже, что чтение ссылки будет необходимо.
@ Bruno, я пересмотрел свою статью, пожалуйста, добавьте комментарии или отредактируйте вики, если вы видите возможности для улучшений.
5

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

Для проверки сертификата не удалось

If you've read the previous sections, you will know what this means (and shame > on you if you have not).

We need to download AddTrustExternalCARoot-2048.pem. Open a Command Prompt and type in:

C:>gem which rubygems C:/Ruby21/lib/ruby/2.1.0/rubygems.rb Now, let's locate that directory. From within the same window, enter the path part up to the file extension, but using backslashes instead:

C:>start C:\Ruby21\lib\ruby\2.1.0\rubygems This will open a Explorer window inside the directory we indicated.

Step 3: Copy new trust certificate

Now, locate ssl_certs directory and copy the .pem file we obtained from previous step inside.

It will be listed with other files like GeoTrustGlobalCA.pem.

0
If you're using rails-assets

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

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

161

использованием не ssl-источника:

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

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

Это было верное решение !!! Спасибо!
да, это должен быть принятый ответ ;-)
Действительно простое решение, которое является кросс-платформенным и позволяет RubyGems позаботиться о деталях. Ницца.
Это правильный ответ. Спасибо!
это был тот, который должен быть принят, ответы выше не объясняют, что вам нужно сначала удалить исходники ssl
55

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

Невозможно обновить rubygems, если SSL-сертификат не принят! Бег по кругу тут;)
Нужно обновить и упаковщик, чтобы он заработал (у меня работает winxp на ruxgems 2.0.3 + bundler 1.3.2 + cygwin openssl 1.0.1e).
Мне пришлось обновить с 1.3.0, сейчас я на 1.3.4 и https больше не выдает ошибку: bundler-1.3.0 / lib / bundler / vendor / net / http / persistent / ssl_reuse.rb: 70: in `connect & apos :: возвращено SSL_connect = 1 errno = 0 состояние = SSLv3 чтение, обмен ключами сервера B: плохая точка подключения (OpenSSL :: SSL :: SSLError)
Подтверждено, только что обновлены драгоценные камни и это исправлено!
49

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

Это будет препятствовать тому, чтобы упаковщик проверял сертификаты SSL драгоценных камней, когда он пытается установить их.

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

%USERPROFILE%\.gemrc также ищетсяgem на винде.
Не пробовал это решение, но в моем случае также работало, когда я добавлял этот контент в~/.gemrc : :sources: - http://rubygems.org
Это полезно в моем случае; за корпоративным брандмауэром, который ограничивает все сжатые файлы, но разрешает их через https.
Рекомендуемое расположение файла для Windows 8?
Удаление проверки SSL является временным решением, которое открывает дыру в безопасности. Узнайте больше здесь:github.com/rubygems/rubygems/commit/…
3

rvm загрузка не подходит для OS X OpenSSL, который устарел и больше не используется операционной системой.

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

rvm reinstall --disable-binary 2.2
Это сработало для меня. Вам необходимо заменить & quot; 2.2 & quot; с рубиновой версией, которую вы используете
307

Update

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

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

gem update --system

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

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

[...] use the non-ssl version of rubygems in your gemfile as a temporary workaround.

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

что они имеют в виду на вершинеGemfile в вашем каталоге рельсов изменить приложение

source 'https://rubygems.org'

в

source 'http://rubygems.org'

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

Это не работает. Запуск этого просто обеспечивает выводLatest version currently installed. Aborting.  Есть еще идеи?
Я принимаю этот ответ, потому что это было то, что я сделал сначала. Позже я изменил свою стратегию развертывания. Теперь я запускаю связывание приложения на другом сервере, а затем копирую его (с гемами вvendor каталог) на сервер, о котором я писал в вопросе. mrzasa
С точки зрения изменения источника, для новых людей, как я. Я хотел бы указать, что этот файл находится в каталоге вашего приложения. Я искал это в каталоге railsinstaller. В любом случае, я сменил источник, и он наконец заработал. Я получаю ошибки сертификата при попытке запустить обновление :(
Это не сработало для меня.The link предоставленный @fbernier ниже исправил это для меня.
gem update --system завершается с той же ошибкой сертификата: \
0

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

export SSL_CERT_FILE=~/RootCert.pem
2

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

gem --version

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

Running 1.8.x: download 1.8.30 Running 2.0.x: download 2.0.15 Running 2.2.x: download 2.2.3

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

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

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

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

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

1

RubyGems-обновление-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
Спасибо, извините, это самое простое решение, которое я нашел ...
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.

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

У меня здесь такая же проблема. Так @Ownatik, как использовать ssl версию rubygems?
Я сделал это, и это работает. Пока это достаточное решение. mrzasa
Вы также можете использовать не-ssl версию rubygems в вашем gemfile как временное решение.
15

Update rubygems: gem update --system Use RVM to refresh SSL certs: rvm osx-ssl-certs update all

Шляпа советэтот совет по проекту RailsApps!

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

Вот и установите environementvariable SSL_CERT_FILE в путь, где вы храните сертификат, например

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

или вы можете установить переменную в вашем скрипте, как этоENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"

Замените & lt; username & gt; с вашим собственным именем пользователя.

Это правильное постоянное исправление, позволяющее избежать использования незащищенного http-источника.
Спасибо. Постоянное исправление здесь.guides.rubygems.org/ssl-certificate-update
благодарю вас. Это был ответ. :)
6

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)

1

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

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

а также

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

полный комплект побежал!

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

Похожие вопросы