Ошибка SSL При установке rubygems не удается извлечь данные из "https://rubygems.org/

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

$gem install rails -v 3.2.14

ОШИБКА: Не удалось найти действительный жемчуг "рельсы" (= 3.2.14), вот почему:

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

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

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

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

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

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

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

  • rvm 1.22.15
  • ruby ​​2.0.0p247 (версия для печати 2013-06-27 41674) [x86_64-darwin12.3.0]
  • OSX 10.8.5

Ответ 1

Для пользователей 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 для окон подготовлены Луисом Лавеной, и путь к сертификатам будет выглядеть примерно так C: /Users/Luis/... проверьте https://github.com/oneclick/rubyinstaller/issues/249 для получения более подробной информации. и этот ответ fooobar.com/questions/28680/... для исправления.

Ответ 2

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

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/и продолжите свою работу.

Ответ 3

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

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

  • Загрузите последний zip файл (в моем случае 2.4.5)
  • Разархивируйте его
  • запустите "ruby setup.rb" в распакованной папке
  • Теперь запустите команду установки gem

Ответ 4

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

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

UPDATE:

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

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

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

Ответ 5

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

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

Ответ 6

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

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

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

rubygems –v

В зависимости от того, есть ли у вас 1.8.x, 2.0.x или 2.2.x, вам нужно будет загрузить обновленный жемчуг с именем "rubygems-update-X.Y.Z.gem", где X.Y.Z - это нужная вам версия. Запуск 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 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 commit, сертификаты переносятся в более конкретные каталоги. Таким образом, в настоящее время ожидается, что сертификат (AddTrustExternalCARoot-2048.pem) будет находиться на следующем пути lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

Ответ 7

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

Пример -

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

Это работает, но есть одно предостережение.

Драгоценный камень установлен, но документация не из-за ошибок сертификата. Вот ошибка, которую я получаю

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)

Ответ 8

Запуск gem update --system работал у меня

Ответ 9

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

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

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

sudo service ntp stop && & sudo ntpdate pool.ntp.org && & sudo service ntp start

Ответ 10

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

brew uninstall --force openssl

brew install openssl

Ответ 11

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

Ответ 12

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

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

Ответ 13

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

 sudo update-ca-certificates

Ответ 14

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

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

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

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

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

Ответ 15

Попробуйте

gem update --system

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

Ответ 16

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

  • Перейдите в папку проекта
  • Установка набора типов

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

Ответ 17

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

Установите CSWcacertificates перед установкой gem install

pkgutil -yi CSWcacertificates

Если вы используете рубиновый набор, который не из OpenCSW, ваша рубиновая версия может ожидать найти файл сертификата в другом месте. В этом случае я просто привязал 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

Ответ 18

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

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

Ответ 19

Для пользователя 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 install bundler" после установки, все, что нужно, это удалить мою интрасеть из драгоценного камня:

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

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

Ответ 20

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

подробнее здесь

Ответ 21

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

gem update bundler

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

Ответ 22

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

Ответ 23

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

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