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

242

Я пытаюсь сделать учебник Майкла Хартла. Когда я пытаюсь установить рельсы 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
  • 0
    Это почти похоже на ошибку регрессии. Я заметил, что у одного из моих учеников сегодня такая же проблема на OS X. До сих пор работаю над этой проблемой. Есть другие связанные вопросы (идентичные?) На SO с прошлого года.
  • 0
    Это известная ошибка в устаревших ( 2.0.* ) rubygems . Попробуйте обновить до последней версии rubygems: gem update --system а затем снова запустите gem install .
Показать ещё 2 комментария
Теги:
ssl
rvm

21 ответ

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

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

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

rvm get stable

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

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

    rvm osx-ssl-certs update all
    
  • Обновить rubygems:

    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 подготовлен Luis Lavena и путь к сертификатам будет показывать что-то вроде C:/Users/Luis/... для проверки https://github.com/oneclick/rubyinstaller/issues/249 для получения более подробной информации и ответа https://stackoverflow.com/questions/19150017/ssl-error-when-installing-rubygems-unable-to-pull-data-from-https-rubygems-o для исправления.

  • 14
    обновление сертификатов сделало свое дело. +1
  • 0
    Есть ли другой способ обновить сертификаты, если вы не используете RVM?
Показать ещё 17 комментариев
240

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

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

  • 8
    Обязательно сохраняйте с расширением .pem , а не .pem.txt !
  • 3
    Что если это не сработает? Я сделал, как говорится в твоих ответах, но я все еще получаю ошибку! 1) Я получил файл AddTrustExternalCARoot-2048.pem , 2) Я поместил файл в C:\Ruby193\lib\ruby\1.9.1\rubygems\ssl_certs , 3) Я запускаю gem install susy и получаю ту же ошибку, которую 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
Показать ещё 7 комментариев
162

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

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

  • Загрузите последний zip файл (в моем случае 2.4.5)
  • Разархивируйте его
  • запустите "ruby setup.rb" в распакованной папке
  • Теперь запустите команду установки gem
  • 1
    У меня работало на Windows 8.1, Ruby 2.0.0. Приветствия.
  • 0
    Dheerendra - Это также устанавливает документы для драгоценного камня?
Показать ещё 17 комментариев
44

Если вы хотите использовать источник без 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
  • 0
    не отказывайтесь от голосования, поскольку это решает эту насущную проблему, но оно оставляет ваш рубин со старыми сертификатами, что все еще плохо
  • 1
    Я обновил ответ, чтобы попытаться прояснить, что это всего лишь обходной путь для корневой проблемы. Просто попытался решить проблему Терина, когда он пытался использовать источник без SSL.
Показать ещё 4 комментария
13

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

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

  • 0
    Спасибо, что поделился; временное изменение https на http работало, но мне нужно было напрямую изменить gemfile.
  • 2
    В моем случае мне нужен трейлинг / с https URL.
10

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

8

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

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

  • 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)
Показать ещё 1 комментарий
4

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

brew uninstall --force openssl

brew install openssl

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

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

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

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

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

3

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

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

  • 0
    Это ничего не сделало для меня ... OpenSSL даже использует хранилище сертификатов Windows?
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
  • 0
    Это работает и на других дистрибутивах Linux.
  • 0
    Есть ли для этого Windows cmd или powershell?
2

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

 sudo update-ca-certificates
1

Попробуйте

gem update --system

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

  • 0
    Работает для меня. Благодарю. Ubuntu; Ruby был установлен с помощью apt install ruby .
  • 0
    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

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

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

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

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

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

0

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

gem update bundler

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

0

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

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

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

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

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

0

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

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

0

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

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

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

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

Ещё вопросы

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