Ошибка 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
Тогда вы можете сделать две вещи:
-
Обновить сертификаты:
rvm osx-ssl-certs update all
-
Обновление рубинов:
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, и на основе сообщений об ошибках я выполнил следующие шаги, чтобы завершить установку поставщика
(это может показаться сумасшедшим, но оно сработало...).
Через машину с неограниченным доступом к Интернету загрузите следующие файлы:
Я добавил эти файлы на сервер интрасети, сохранив структуру папок выше:
spec.4.8.gz e latest_specs.4.8.gz
- $INTRANET_HOME\быстрый\Marshal.4.8
пакетирования-1.11.2.gemspec.rz
пакетирования-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