Ошибка SSL при установке rubygems, Невозможно получить данные с https://rubygems.org/

269

Я пытаюсь сделать урок Майкла Хартла. Когда я пытаюсь установить rails 3.2.14 в моем наборе, я получаю следующую проблему:

$ gem install rails -v 3.2.14

ОШИБКА: не удалось найти действительный камень 'rails' (= 3.2.14), вот почему:

Невозможно загрузить данные с https://rubygems.org/ - возвращено SSL_connect = 1 errno = 0 состояние = SSLv3 чтение сертификата сервера B: сбой проверки сертификата ( https://s3.amazonaws.com/production.s3.rubygems.org /specs.4.8.gz )

После поиска в Google я обнаружил, что могу использовать источник не-SSL для rubygems, поэтому я запустил:

sudo gem sources -a http://rubygems.org

Затем, когда я снова попытался установить рельсы, все прошло успешно. Однако, я все еще получил проблему выше, но как предупреждение:

ПРЕДУПРЕЖДЕНИЕ. Невозможно извлечь данные из https://rubygems.org/ : возвращено SSL_connect = 1 errno = 0 состояние = SSLv3 прочитанный сертификат сервера B: сбой проверки сертификата ( https://s3.amazonaws.com/production.s3 .rubygems.org / specs.4.8.gz )

Как я могу полностью удалить это предупреждение / ошибку?

Я использую следующее:

  • рвм 1.22.15
  • ruby 2.0.0p247 (2013-06-27, редакция 41674) [x86_64-darwin12.3.0]
  • OSX 10.8.5
TPW
источник
Это почти похоже на ошибку регрессии. Я заметил, что у одного из моих учеников сегодня была такая же проблема на OS X. Все еще работаю над этой проблемой. Есть другие связанные вопросы (идентичные?) На SO с прошлого года.
vgoff
Это известная ошибка в устаревших ( 2.0.*) версиях rubygems. Попробуйте обновить до последней версии rubygems: gem update --systemи затем снова запустите gem install.
Алексей Матюшкин
Если все в порядке, обновите свою версию ruby. Эта проблема исправлена ​​в более новой версии ruby.
Гонконг
После добавления исходного кода http, запуск gem sources -r https://rubygems.org/работал для меня (в том числе удаление предупреждения).
BrainSlugs83
Слишком много длинных ответов, хотя в Linux / Mac их можно отсортировать в одну строку: stackoverflow.com/a/56993071/5689995
laimison

Ответы:

382

Для пользователей RVM и OSX

Убедитесь, что вы используете последнюю версию rvm:

rvm get stable

Тогда вы можете сделать две вещи:

  1. Обновить сертификаты:

    rvm osx-ssl-certs update all
  2. Обновление рубинов:

    rvm rubygems latest

Для не RVM пользователей

Найти путь для сертификата:

cert_file=$(ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE')

Создать сертификат:

security find-certificate -a -p /Library/Keychains/System.keychain > "$cert_file"
security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> "$cert_file"

Весь код: https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/osx-ssl-certs


Для не OSX пользователей

Обязательно обновите пакет ca-certificates. (на старых системах он может быть недоступен - не используйте старую систему, которая больше не получает обновления безопасности)

Примечание Windows

Рубин Установщик строит для окна готовится Луис Лавена и путь к сертификатам будет показывать что - то вроде C:/Users/Luis/...проверки https://github.com/oneclick/rubyinstaller/issues/249 для получения более подробной информации , и этого ответа https://stackoverflow.com / a / 27298259/497756 для исправления.

mpapis
источник
Есть ли другой способ обновить сертификаты, если вы не используете RVM?
Эдуардо
В rvm rubygems latestрезультате запуска возникла ошибка, сообщающая об отсутствии контрольных сумм. Тем не менее, вещи начали работать без этого тоже ... очевидно, вы могли бы заставить это, --verify-downloads 1если вам нужно. Есть идеи, почему это может быть? Он пытался получить версиюrubygems-2.1.6
Тимо
rvm жестко кодирует md5s для загрузки в своем коде, я только добавил их в headверсию и stableскоро выпустлю .
mpapis
2
Я запускаю это в Windows и получаю путь, который даже не существует на моем компьютере "C: /Users/Luis/Code/openknapsack/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0k/ssl /cert.pem "Также нет пользователя с именем Luis. Какого черта?
isimmons
3
Какие-либо предложения для пользователей Mac Mojave? Запуск вpermission denied: /private/etc/ssl/cert.pem
Chandrew
241

Последние результаты ...

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

Самое главное ... скачать https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

Выясните, где его можно вставить

C:\>gem which rubygems
C:/Ruby21/lib/ruby/2.1.0/rubygems.rb

Затем просто скопируйте файл .pem в ../2.1.0/rubygems/ssl_certs/ и продолжайте заниматься своим делом.

beauXjames
источник
8
Не забудьте сохранить с .pemрасширением, а не .pem.txt!
Дан Даскалеску
3
Что если это не сработает? Я сделал, как говорится в твоих ответах, но я все еще получаю ошибку! 1) Я получил файл AddTrustExternalCARoot-2048.pem, 2) Я поместил файл в C:\Ruby193\lib\ruby\1.9.1\rubygems\ssl_certs, 3) Я запускаю gem install susyи получаю ту же ошибкуUnable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Green
попробуйте обновить установку Ruby ... эта сущность не гарантирует обратной совместимости с вашей версией
beauXjames,
1
Некоторые заметки о связи с Луис Лавеной, которую вы дали. Возможно, вы захотите установить rubygems из файла gem вместо zip-файлов, которые он упоминает. Я не нашел команду для установки из распакованного файла gem или zip. Жемчужина здесь - rubygems.org/pages/download . Команда -gem install --local C:\Downloads\rubygems-update-2.4.5.gem
Эрран Морад
9
ссылка для скачивания больше не действительна. Для тех из вас, кто все еще сталкивается с этой проблемой, обратитесь к ответу Дирендры для решения
Llama.new
174

Для пользователей Windows

Перейти по ссылке http://rubygems.org/pages/download

  1. Загрузите последний zip-файл (в моем случае 2.4.5)
  2. Распакуйте его
  3. запустите "ruby setup.rb" в разархивированной папке
  4. Теперь запустите команду Gem Install
Дерендра Кулкарни
источник
1
Работал у меня на Windows 8.1, Ruby 2.0.0. Приветствия.
Йи Цзэн
7
Лучшее решение для пользователей Windows
Сорин Хайдау
1
Гораздо проще, чем альтернативы для Windows, перечисленные в других ответах, и отлично работали на 64-битной Windows 7. Спасибо!
Гургадурген
1
Это не работает для меня. Devkit не совместим с последней версией ruby ​​на windows 7
roo2
2
У меня работает на Windows 10 и Ruby 2.1.0. Спасибо!
MSC
54

Если вы хотите использовать источник без SSL, попробуйте сначала удалить источник HTTPS, а затем добавить HTTP:

sudo gem sources -r https://rubygems.org
sudo gem sources -a http://rubygems.org  

ОБНОВИТЬ:

Как утверждает mpapis, это следует использовать только как временное решение. Могут возникнуть некоторые проблемы с безопасностью, если вы обращаетесь к RubyGems через источник без SSL.

Как только обходной путь больше не нужен, вы должны восстановить SSL-источник:

sudo gem sources -r http://rubygems.org
sudo gem sources -a https://rubygems.org
Эдуардо
источник
не отказывайтесь от голосования, поскольку это решает эту насущную проблему, но он оставляет ваш рубин со старыми сертификатами, что все еще плохо
mpapis
1
Я обновил ответ, чтобы попытаться прояснить, что это всего лишь обходной путь для корневой проблемы. Просто попытался решить проблему Терина, когда он пытался использовать источник без SSL.
Эдуардо
5
К вашему сведению, я должен был сделать sudo gem sources -r https://rubygems.org/и sudo gem sources -r http://rubygems.org/. Обратите внимание на трейлинг /.
Росс Роджерс
Да, это возможно. Я думаю, что это зависит от того, как источник был добавлен в первую очередь. Я имею в виду, если источник был добавлен в конце /, он также должен быть удален в конце /.
Эдуардо
Единственное решение, которое помогло мне скачать фу @ ^! # Gem. Спасибо вам большое!
Genarito
16

В Windows вам нужно будет использовать HTTPисточник для обновления, а gemзатем вернуться к использованию HTTPS.

gem sources -r https://rubygems.org/
gem sources -a http://rubygems.org/
gem update --system
gem sources -r http://rubygems.org/
gem sources -a https://rubygems.org/

Изменить: Предупреждение Я не уверен, что это безопасно . Кто-нибудь знает, подписаны ли пакеты ruby? Принятый ответ выглядит как лучшее решение.

roo2
источник
Спасибо, что поделился; временное изменение https на http работало, но мне нужно было напрямую изменить gemfile.
Ноха Карим
2
В моем случае мне нужен трейлинг / с URL-адресом https.
Элвин
1
Как обновление к этому ответу, перед тем, как начать gem sources -lобновление системы и после нее, рекомендуется начать с просмотра исходных текстов. Если обновление не удалось, укажите номер версии сразу после --system. См. Rubygems.org/gems/rubygems-update/versions или спросите коллег, какие gem -vотчеты.
Гэри С. Уивер
10

Для пользователей Windows (и, возможно, других)

На Rubygems.org есть руководство, которое не только объясняет, как решить эту проблему, но и почему у многих людей оно возникает : обновление сертификата SSL Причиной проблемы является то, что rubygems.org перешел на более безопасный сертификат SSL (SHA-2, который использовать 256-битное шифрование). Инструмент командной строки rubygems связывает ссылку на правильный сертификат. Поэтому сам рубинем не может быть обновлен с использованием более старой версии рубинем. Rubygems должен сначала быть обновлен вручную.

Сначала узнайте, какие у вас рубины:

rubygems v

В зависимости от того, есть ли у вас версия 1.8.x, 2.0.x или 2.2.x, вам нужно будет загрузить гем обновления с именем «rubygems-update-XYZgem», где XYZ - нужная вам версия. Запуск 1.8.x: скачать: https://github.com/rubygems/rubygems/releases/tag/v1.8.30 Запуск 2.0.x: скачать: https://github.com/rubygems/rubygems/releases/tag/v2 .0.15 Запуск 2.2.x: скачать: https://github.com/rubygems/rubygems/releases/tag/v2.2.3

Установите обновление gem:

gem install –-local full_path_to_the_gem_file

Запустите обновление gem:

update_rubygems --no-ri --no-rdoc

Проверьте, что rubygems был обновлен:

rubygems v

Удалить обновление gem:

gem uninstall rubygems-update -x

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

Загрузите последний сертификат (в настоящее время AddTrustExternalCARoot-2048.pem) с https://rubygems.org/pages/download . Все сертификаты также расположены по адресу: https://github.com/rubygems/rubygems/tree/master/lib/rubygems/ssl_certs.

Узнайте, где его поставить:

gem which rubygems

Поместите этот файл в каталог «rubygems \ ssl_certs» в этом месте.

В соответствии с фиксацией rubygems сертификаты перемещаются в более конкретные каталоги. Таким образом, в настоящее время ожидается, что сертификат (AddTrustExternalCARoot-2048.pem) находится по следующему пути.lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

Джон Панкович
источник
2
raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/… больше не существует
Фил О
8

Попробуйте использовать исходный сайт для драгоценных камней, т.е. rubygems.org. Используйте http вместо https. Этот метод не включает никакой работы, такой как установка сертификатов и все такое.

Пример -

gem install typhoeus --source http://rubygems.org

Это работает, но есть одна оговорка.

Gem установлен, но документация не из-за определенных ошибок. Вот ошибка, которую я получаю

Parsing documentation for typhoeus-0.7.0 WARNING: Unable to pull 
data from 'https://rubygems.org/': SSL_connect returned=1 errno=0 
state=SSLv3 read server certificate B: certificate verify failed 
(https://rubygems.org/latest_specs.4.8.gz)
Эрран Морад
источник
7

Бег gem update --systemработал на меня

user3408293
источник
6
Это работало и для меня на Windows. Мне пришлось временно переключиться на классический HTTP, затем обновить, а затем переключиться обратно на SSL.
Том Мэйфилд
1
ОШИБКА. SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
зеленый
источники драгоценных камней --remove rubygems.org источники драгоценных камней -a rubygems.org обновление драгоценных камней --system
Stefan Steiger
4

Убедитесь, что ваши системные часы верны

Эта точная ошибка произошла со мной сегодня на виртуальной машине Ubuntu, работающей на VirtualBox. Я испробовал большинство решений, показанных выше, прежде чем заметил, что я вернулся из очень старого приостановленного состояния, и мои часы были выключены на много дней.

Обновление часов сразу исправило мою проблему. Вот команда, которую я использовал в моем случае:

служба sudo ntp stop && sudo ntpdate pool.ntp.org && служба sudo ntp start

dbrewer
источник
4

Простое удаление и переустановка openssl с помощью homebrew решили эту проблему для меня.

brew uninstall --force openssl

brew install openssl

ntj
источник
1
В новых версиях homebrew вам может потребоваться выполнить команду следующим образом: brew uninstall --ignore-dependencies openssl(что эквивалентно старому forceфлагу)
Batkins
3

Для пользователей Fedora

Обновите cert.pemфайл до новейшей версии, предоставленной cURL: http://curl.haxx.se/ca/cacert.pem

curl -o `ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE' |tr -d \"` http://curl.haxx.se/ca/cacert.pem
ENDOH takanao
источник
Для этого есть Windows CMD или PowerShell?
Эрран Морад
3

Если вы используете Windows, откройте https://rubygems.org/ с помощью Internet Explorer.

Нажмите на информацию о безопасности и импортируйте сертификат. Суть в том, что ваша цепочка сертификации устарела, и вам нужно добавить этот новый сертификат. Помните, что это не нарушение безопасности, если вы можете проверить сертификат как доверенный.

Пауло Фидальго
источник
Это ничего не сделало для меня ... OpenSSL даже использует хранилище сертификатов Windows?
Жюльен Раффин
2

В моем случае сертификаты Ubuntu CA были устаревшими. Я исправил это, запустив:

 sudo update-ca-certificates
Maniek
источник
2

Подход / однострочник, который можно автоматизировать для загрузки драгоценных камней с использованием HTTP вместо HTTPS:

printf -- '---\n:sources:\n- http://rubygems.org\n' | tee ~/.gemrc
laimison
источник
Работает отлично, если вы столкнулись с проблемой в докер-контейнер!
user7364588
1

Особый случай RubyGems (инструмент командной строки) заключается в том, что он требует связать внутри своего кода сертификаты доверия, которые позволяют RubyGems устанавливать соединение с серверами, даже если базовая операционная система не может проверить их подлинность.

Еще несколько месяцев назад этот сертификат был предоставлен одним центром сертификации, но новый сертификат был предоставлен другим.

Из-за этого существующие установки RubyGems должны были быть обновлены до переключения сертификата и дать достаточно времени для распространения изменений (и людей для обновления)

Любой может найти свое решение, следуя простым шагам, приведенным в ссылке ниже

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

ImranNaqvi
источник
1

Пытаться

gem update --system

Надеюсь, это решит проблему.

puneet18
источник
Работает для меня. Спасибо. Ubuntu; Ruby был установлен с помощью apt install ruby.
Марсло
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
Джонатан
1

Загрузите файл cacert.pem с http://curl.haxx.se/ca/cacert.pem . Сохраните этот файл в C: \ RailsInstaller \ cacert.pem.

Теперь сообщите ruby ​​о вашем пакете центра сертификации, установив SSL_CERT_FILE. Чтобы установить это в текущем сеансе командной строки, введите:

set SSL_CERT_FILE = C: \ RailsInstaller \ cacert.pem

Шубхам Кумар Гупта Ggps
источник
0

У меня была такая же проблема при попытке установить огуречный драгоценный камень. Однако я заметил, что пакетный гем уже установлен с ruby ​​2.0. Я создал Gemfile.rb в папке проекта с необходимыми гемами и выполнил следующие действия

  1. Перейдите в папку проекта
  2. Тип комплекта установки

Все необходимые камни установлены.

user3037926
источник
0

Для Illumos / Solaris с использованием OpenCSW pkgutil:

Установите CSWcacertificates до 'gem install'

pkgutil -yi CSWcacertificates

Если вы используете набор ruby, не принадлежащий OpenCSW, ваша версия ruby ​​может ожидать найти файл сертификата в другом месте. В этом случае я просто символически связал OpenCSW /etc/opt/csw/ssl/cert.pem с ожидаемым местом.

Проверьте, где ruby ​​ожидает найти его:

export cf=`ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'` && echo $cf

Затем, если есть расхождение, свяжите это:

ln -s /etc/opt/csw/ssl/cert.pem $cf && file $cf
Иаков
источник
0

Или может быть предотвращен брандмауэром, как я. Попробуй это:

sudo gem install --http-proxy http: // localhost: порт cocoapods -V

Виктор Чой
источник
0

Для пользователя Windows:

После успешной установки Ruby 2.2.3 (+ rubygems 2.5.1) на тестовом компьютере с доступом к Интернету у меня была эта ошибка SSL, когда я устанавливал упаковщик на производственном компьютере в сети.

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

Через машину с неограниченным доступом в интернет скачали следующие файлы:

Я добавил эти файлы на сервер интрасети, сохранив структуру папок по ссылкам выше:

  • $ INTRANET_HOME

spec.4.8.gz e latest_specs.4.8.gz

  • $ INTRANET_HOME \ быстрой \ Marshal.4.8

пакетирования-1.11.2.gemspec.rz

  • $ INTRANET_HOME \ драгоценные камни

пакетирования-1.11.2.gem

Затем я добавил свою интрасеть для доступа к источнику гемов:

gem sources -a http://mydomain.com.br

После установки я успешно запустил «сборщик гемов», и все, что мне понадобилось, - это удалить мою внутреннюю сеть из гема:

gem sources -r http://mydomain.com.br

Я надеюсь, что это полезно в любой подобной ситуации ....

Рожерио Арантес
источник
0

Как пользователь Windows 10, я последовал Dheerendra в ответ , и он работал на меня один день. На следующий день я снова столкнулся с проблемой, и его решение не сработало. Для меня исправление было обновить bundlerс:

gem update bundler

Я считаю, что моей версии bundlerбыло больше, чем несколько месяцев.

Александр
источник
0

Убедитесь, что вы установили ruby ​​с параметром --disable-binary , если нет, удалите его и переустановите с помощью параметра.

больше информации здесь

Feuda
источник
0

Ответ больше не действителен. Так как я столкнулся с проблемой со старой Windows Ruby прямо сейчас, я выложу ответ.

Когда я хотел установить гем activesupport:

gem in activesupport --version 5.1.6

ERROR:  Could not find a valid gem 'activesupport' (= 5.1.6), here is why:
          Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B
: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)

Следующие шаги необходимо скопировать только сертификаты из более новых рубинов Windows. Возьми последний ruby ​​(или хотя бы ruby 2.4.0 ) и сделайте следующее:

скопируйте сертификаты из этих каталогов (адаптируйте их под свои нужды):
C:\prg_sdk\rubies\Ruby-2.4\lib\ruby\2.4.0\rubygems\ssl_certs\rubygems.org
C:\prg_sdk\rubies\Ruby-2.4\lib\ruby\2.4.0\rubygems\ssl_certs\index.rubygems.org

до пункта назначения (снова настройте на то, что вам нужно):
C:\prg_sdk\rubies\Ruby231-p112-x64\lib\ruby\2.3.0\rubygems\ssl_certs

Tukan
источник