Я пытаюсь сделать учебник Майкла Хартла. Когда я пытаюсь установить рельсы 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:
rvm get stable
Затем вы можете сделать две вещи:
Обновить сертификаты:
rvm osx-ssl-certs update all
Обновить rubygems:
rvm rubygems latest
Найти путь для сертификата:
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
Обязательно обновите пакет ca-certificates
. (в старых системах он может быть недоступен - не используйте эту старую систему, которая больше не получает обновлений безопасности)
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 для исправления.
Последние результаты...
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/и продолжите свою работу.
.pem
, а не .pem.txt
!
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
Перейти к ссылке http://rubygems.org/pages/download
Если вы хотите использовать источник без 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
В 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/
Изменить: предупреждение Я не уверен, что это безопасно. Кто-нибудь знает, подписаны ли рубиновые пакеты? Принятый ответ выглядит как лучшее решение.
В 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
Попробуйте использовать исходный веб-сайт для драгоценных камней, т.е. 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)
Запуск gem update --system
работал у меня
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
Простое удаление и переустановка openssl с homebrew решила эту проблему для меня.
brew uninstall --force openssl
brew install openssl
brew uninstall --ignore-dependencies openssl
(что эквивалентно старому флагу force
)
Эта точная ошибка произошла со мной сегодня на виртуальной машине Ubuntu, работающей на VirtualBox. Я попробовал большинство решений, показанных выше, прежде чем заметил, что я вернулся из очень старого приостановленного состояния, и мои часы были отключены на многие дни.
Обновление часов сразу же исправило мою проблему. Вот команда, которую я использовал в моем случае:
sudo service ntp stop && & sudo ntpdate pool.ntp.org && & sudo service ntp start
Если вы используете окна, откройте https://rubygems.org/ с помощью Internet Explorer.
Нажмите на информацию о безопасности и импортируйте сертификат. Суть в том, что ваша цепочка сертификации устарела, и вам нужно добавить этот новый сертификат. Помните, что это не является нарушением безопасности, если вы можете проверить сертификат как надежный.
Обновите 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
В моем случае сертификаты Ubuntu CA устарели. Я исправил его, запустив:
sudo update-ca-certificates
Попробуйте
gem update --system
Надеюсь, что он решает проблему.
apt install ruby
.
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)
Частный случай RubyGems (инструмент командной строки) заключается в том, что ему требуется связать внутри своего кода сертификаты доверия, которые позволяют RubyGems устанавливать соединение с серверами, даже если базовая операционная система не может проверить личность их.
До тех пор, пока несколько месяцев назад этот сертификат был предоставлен одним ЦС, но новый сертификат предоставлен другим.
Из-за этого существующие установки RubyGems должны быть обновлены до переключения сертификата и предоставить достаточно времени для изменения (и людей для обновления)
Любой может найти свое решение, выполнив простые шаги, указанные в ссылке ниже
Как пользователь Windows 10, я последовал за Dheerendra answer, и это сработало для меня в один прекрасный день. На следующий день я снова столкнулся с проблемой, и его исправить не удалось. Для меня исправить было обновление bundler
с помощью
gem update bundler
Я считаю, что моей версии bundler
было больше нескольких месяцев.
Убедитесь, что вы установили ruby с опцией - disable-binary, если нет, удалите его и переустановите с помощью опции.
подробнее здесь
Для пользователя Windows:
После установки Ruby 2.2.3 (+ rubygems 2.5.1) успешно на тестовой машине с доступом к Интернету, у меня была эта ошибка SSL, когда я установил связку на производственный компьютер в пределах сети.
Поскольку у меня были ограничения доступа к сети, и не было возможности изменить настройки для доступа SSL, и на основе сообщений об ошибках я выполнил следующие шаги, чтобы завершить установку поставщика (это может показаться сумасшедшим, но оно сработало...).
Через машину с неограниченным доступом к Интернету загрузите следующие файлы:
Я добавил эти файлы на сервер интрасети, сохранив структуру папок выше:
spec.4.8.gz e latest_specs.4.8.gz
пакетирования-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
Я надеюсь, что это полезно в любой подобной ситуации....
Или может быть предотвращено брандмауэром, как я. Попробуйте следующее:
sudo gem install --http-proxy http://localhost:port cocoapods -V
Установите 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
У меня была такая же проблема при попытке установить жемчуг огурца. Тем не менее, я заметил, что сборщик gem уже установлен с ruby 2.0. Я создал Gemfile.rb в папке проекта с необходимыми драгоценными камнями и выполнил следующие шаги.
Все необходимые драгоценные камни установлены.
2.0.*
)rubygems
. Попробуйте обновить до последней версии rubygems:gem update --system
а затем снова запуститеgem install
.