Помилка SSL Під час встановлення рубігем неможливо витягнути дані з 'https://rubygems.org/


269

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

$ gem встановити рейки -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 )

Оглянувшись, я виявив, що можу використовувати не-SSL-джерело для рубігем, тому я побіг:

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 )

Як я можу повністю видалити це попередження / помилку?

Я використовую наступне:

  • rvm 1,22,15
  • ruby 2.0.0p247 (2013-06-27 версія 41674) [x86_64-darwin12.3.0]
  • OSX 10.8.5

Це майже схоже на помилку регресії. Я помітив, що один із моїх студентів із такою ж проблемою є і сьогодні в ОС X. Досі працюю над проблемою. Є інші пов'язані питання (ідентичні?) Щодо SO минулого року.
vgoff

Це відома помилка у застарілих ( 2.0.*) версіях rubygems. Спробуйте оновити до останньої версії rubygems: gem update --systemа потім повторно запустіть gem install.
Олексій Матюшкін

Якщо нормально оновити свою рубінову версію, оновіть її. Ця проблема виправлена ​​в новій рубіновій версії.
Hong

Після додавання джерела 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

Налаштування Ruby Installer для Windows підготував Луїс Лавена, і шлях до сертифікатів буде показувати щось на зразок C:/Users/Luis/...перевірки https://github.com/oneclick/rubyinstaller/isissue/249 для отримання більш детальної інформації та відповіді на цю сторінку https://stackoverflow.com / a / 27298259/497756 для виправлення.


Чи є інший спосіб оновити certs, якщо ви не використовуєте 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 "Немає користувача на ім'я Луїс. Якого біса?
isimmons

3
Будь-які пропозиції для користувачів Mac Mojave? permission denied: /private/etc/ssl/cert.pem
Наткнувся

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


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
Зелений

спробуйте оновити встановлення Ruby ... цей суть не гарантує зворотної сумісності з вашою версією
beauXjames

1
Деякі примітки про посилання на луїс лавена, яке ви дали. Можливо, ви захочете встановити рубігми з файлу gem замість zip-файлів, про які він згадує. Я не знайшов команду встановити з розпакованого дорогоцінного або zip-файлу. Gem тут - 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. Завантажте останній поштовий файл (у моєму випадку 2.4.5)
  2. Розпакуйте його
  3. запустіть "ruby setup.rb" у нерозпакованій папці
  4. тепер запустіть команду встановити gem

1
Для мене працював у Windows 8.1, Ruby 2.0.0. Ура.
Yi Zeng

7
Найкраще рішення для користувачів Windows
Sorin Haidau

1
Набагато простіше, ніж альтернативи для Windows, перелічені в інших відповідях, і відмінно працювали на Windows 7 64-розрядні. Дякую!
Гургадурген

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
FYI, я повинен був зробити sudo gem sources -r https://rubygems.org/і sudo gem sources -r http://rubygems.org/. Зверніть увагу на крок /.
Росс Роджерс

Так, можливо. Я думаю, це залежить від того, як джерело було додано в першу чергу. Я маю на увазі, якщо джерело було додане із заднім числом /, воно також повинно бути видалено із заднім числом /.
Едуардо

Єдине рішення, яке працювало для мене, щоб завантажити fu @ ^! # Gem. Дуже дякую!
Генаріто

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/

Редагувати: Попередження Я не впевнений, чи безпечно це . Хтось знає, чи підписані пакети з рубіном? Прийнята відповідь виглядає як краще рішення.


Дякую, що поділились; тимчасова зміна https на http працювала, але мені потрібно було безпосередньо змінити gemfile.
Ноха Карім

2
У моєму випадку мені знадобився останній / з URL-адресою https.
Альвін Шоман

1
Як оновлення цієї відповіді, корисно, перш ніж почати робити, gem sources -lпобачити джерела до та після оновлення системи. Якщо оновлення не вдається, вкажіть номер версії відразу після - системи. Перегляньте сторінку 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 install –-local full_path_to_the_gem_file

Запустити дорогоцінний камінь оновлення:

update_rubygems --no-ri --no-rdoc

Перевірте, чи були оновлені рубігеми:

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» у цьому місці.

Згідно з виконанням рубігем , сертифікати переміщуються у більш конкретні каталоги. Таким чином, зараз сертифікат (AddTrustExternalCARoot-2048.pem) очікується на наступному шляхуlib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem



8

Спробуйте використовувати вихідний веб-сайт для дорогоцінних каменів, тобто rubygems.org. Використовуйте http замість https. Цей метод не передбачає будь-яких робіт, таких як встановлення certs і все таке.

Приклад -

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

Це працює, але є один застереження, хоча.

Самоцвіт встановлено, але документація не через помилки cert. Ось помилка, яку я отримую

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)
Зелений

джерела дорогоцінних каменів --ремонт rubygems.org джерела дорогоцінних каменів -a rubygems.org оновлення дорогоцінних каменів --система
Стефан Штайгер

4

Переконайтесь, що ваш системний годинник правильний

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

Оновлення годинника негайно вирішило мою проблему. Ось команда, яку я використав у своєму випадку:

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


4

Просто видалення та перевстановлення openssl з homebrew вирішило цю проблему для мене.

brew uninstall --force openssl

brew install openssl


1
З новішими версіями домашньої версії вам може знадобитися запустити команду так: brew uninstall --ignore-dependencies openssl(що еквівалент старому forceпрапору)
Batkins


3

Якщо ви використовуєте Windows, відкрийте https://rubygems.org/ за допомогою Internet Explorer.

Клацніть на інформацію про безпеку та імпортуйте сертифікат. Підсумок - ваш ланцюжок сертифікації застарів, і вам потрібно додати цей новий сертифікат. Пам'ятайте, що це не є порушенням безпеки, якщо ви можете підтвердити сертифікат як надійний.


Це нічого не зробило для мене ... Чи OpenSSL навіть використовує сховище сертифікатів Windows?
Жульєн Руффін

2

У моєму випадку сертифікати Ubuntu CA застаріли. Я виправив це, запустивши:

 sudo update-ca-certificates

2

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

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

Робота вдосконалюється, якщо ви стикаєтеся з проблемою в контейнер для докера!
користувач7364588

1

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

До декількох місяців тому цей сертифікат надав один КА, але новіший сертифікат надав інший.

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

Будь-хто може знайти своє рішення, дотримуючись простих кроків, наведених у посиланні нижче

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


1

Спробуйте

gem update --system

Сподіваюся, це вирішить проблему.


Працює для мене. Дякую. Ubuntu; Ruby був встановлений за допомогою apt install ruby.
Marslo

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.

Тепер повідомте рубіну про комплект ваших сертифікатів, встановивши SSL_CERT_FILE. Щоб встановити це в поточному сеансі командного рядка, введіть:

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


0

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

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

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


0

Для Illumos / Solaris з використанням OpenCSW pkgutil:

Встановіть CSWcacertificate до "встановлення дорогоцінного каменю"

pkgutil -yi CSWcacertificates

Якщо ви використовуєте комплект рубіну, який не є OpenCSW, ваша версія рубіну може очікувати, що файл сертифіката знайдеться в іншому місці. У цьому випадку я просто пов'язував /etc/opt/csw/ssl/cert.pem з очікуваним місцем OpenCSW.

Перевірте, де рубін очікує його знайти:

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

Для користувача Windows:

Після успішного встановлення Ruby 2.2.3 (+ rubygems 2.5.1) на тестовій машині з доступом до Інтернету, у мене була ця помилка SSL, коли я встановив bundler на виробничій машині, в межах мережі.

Оскільки у мене були обмеження доступу до мережі, і не було можливості змінити налаштування доступу до SSL, і на основі повідомлень про помилки я здійснив наведені нижче дії, щоб мати змогу закінчити встановлення пакета (це може здатися божевільним, але це працював ...).

Через машину з необмеженим доступом до Інтернету завантажили такі файли:

Я додав ці файли на інтранет-сервер, зберігаючи структуру папок вищевказаних посилань:

  • $ INTRANET_HOME

spec.4.8.gz e latest_specs.4.8.gz

  • $ INTRANET_HOME \ швидкий \ Маршал.4.8

bundler-1.11.2.gemspec.rz

  • $ INTRANET_HOME \ gems

bundler-1.11.2.gem

Потім я додав свою інтранет для доступу до джерела дорогоцінних каменів:

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

Я успішно запустив "gem install bundler" після інсталяції, все, що потрібно, було видалити мій інтранет з дорогоцінного каміння:

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

Я сподіваюся, що це корисно в будь-якій подібній ситуації ....


0

Як користувач Windows 10, я переслідував відповідь Дерендри , і це працювало на мене один день. Наступного дня я знову відчув проблему, і його виправлення не спрацювало. Для мене виправлення було оновити за bundlerдопомогою:

gem update bundler

Я вважаю, що моїй версії bundlerбуло більше кількох місяців.


0

Переконайтеся, що ви встановили рубін з опцією --disable-binary , якщо ні, видаліть його та перевстановіть за допомогою параметра.

Більше інформації тут


0

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

Коли я хотів встановити дорогоцінний камінь активації:

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 rubin. Візьміть останній рубін (або принаймні рубін 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.