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

Я пытаюсь сделать урок Майкла Хартла. Когда я пытаюсь установить 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

26 ответов

Решение

Для пользователей 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

Сборки Ruby Installer для Windows подготовлены Луисом Лавеной, и путь к сертификатам будет выглядеть примерно так: C:/Users/Luis/... проверьте https://github.com/oneclick/rubyinstaller/issues/249 для получения дополнительной информации и этого ответа /questions/8285237/oshibka-ssl-pri-ustanovke-rubygems-nevozmozhno-poluchit-dannyie-s-httpsrubygemsorg/8285297#8285297 для исправления.

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

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/ и продолжайте заниматься своим делом.

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

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

  1. Загрузите последний zip-файл (в моем случае 2.4.5)
  2. Распакуйте его
  3. запустите "ruby setup.rb" в разархивированной папке
  4. Теперь запустите команду Gem Install

Если вы хотите использовать источник без 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

В 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? Принятый ответ выглядит как лучшее решение.

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

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

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

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

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

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

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

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

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

brew uninstall --force openssl

brew install openssl

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

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

Для пользователей 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

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

printf -- '---\n:sources:\n- http://rubygems.org\n' | tee ~/.gemrc

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

 sudo update-ca-certificates

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

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

установите SSL_CERT_FILE=C:\RailsInstaller\cacert.pem

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

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

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

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

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

Для Windows я использовал https://gist.github.com/fnichol/867550 . Мне пришлось вручную загрузить файл cacert.pem. (перейдите по адресу https://curl.se/docs/caextract.html.) Поместите его в любую папку, из которой он не будет удален.

Убедитесь, что вы добавили его в свои системные переменные среды !!!

Я сделал это (в Windows 10) через панель управления (выберите «Учетные записи пользователей»), где есть опция «Изменить мои переменные среды». Создайте новую переменную и установите значение как путь и имя файла!

      var name    SSL_CERT_FILE

var value   C:\{your_dir}\cacert.pem

Это гарантирует, что он останется видимым / пригодным для использования каждый раз, когда он вам понадобится (то есть в каждом командном окне, которое вы открываете)!

Пытаться

gem update --system

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

Для пользователя 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

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

зайдите на rubygems и загрузите последнюю версию, которая у меня работает. Я использую окна.

Для 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

Ответ больше не действителен. Так как я столкнулся с проблемой со старым 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

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

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

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

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

gem update bundler

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

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

sudo gem install --http-proxy http://localhost:port cocoapods -V

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

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

Другие вопросы по тегам