Когда я запускаю bundle install
для моего проекта Rails 3 на Centos 5.5, он терпит неудачу с ошибкой:
Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3
read server certificate B: certificate verify failed
(https://bb-m.rubygems.org/gems/multi_json-1.3.2.gem)
An error occured while installing multi_json (1.3.2), and Bundler cannot continue.
Make sure that `gem install multi_json -v '1.3.2'` succeeds before bundling.
Когда я пытаюсь установить драгоценный камень вручную (через gem install multi_json -v '1.3.2'
), он работает. Та же проблема возникает и с несколькими другими драгоценными камнями. Я использую RVM (1.12.3), ruby 1.9.2, bundler 1.1.3.
Как это исправить?
Обновление
Теперь, когда у меня есть карма, которая достаточно хороша из этого ответа, каждый должен знать, что это должно быть исправлено.
re: через Ownatik снова сбой установки пакета с ошибкой проверки сертификата SSL
gem update --system
Мой ответ по-прежнему верен и оставлен ниже для справки, если это не работает для вас.
Честно говоря, лучшим временным решением является
[...] используйте не-ssl-версию rubygems в вашем gemfile как временное обходное решение.
через пользователя Ownatik
то, что они означают, находится в верхней части Gemfile
в вашем каталоге каталогов приложений rails
source 'https://rubygems.org'
к
source 'http://rubygems.org'
обратите внимание, что вторая версия - http, а не http s
vendor
) на сервер, о котором я писал в этом вопросе.
Замените источник gsm ssl не-ssl в качестве временного решения:
Причина - старые рубигемы. Сначала вам необходимо обновить системную часть, используя источник non ssl:
gem update --system --source http://rubygems.org/
(временное обновление системной части с использованием не-ssl-соединения).
Теперь вы готовы использовать gem update
.
Если вы находитесь на Mac и используете недавнюю версию RVM (~ 1.20), для меня работала следующая команда.
rvm osx-ssl-certs update
Теперь эта проблема должна быть исправлена. Обновите rubygems (gem update --system
), убедитесь, что openssl находится на последней версии вашей ОС или попробуйте, чтобы эти советы все еще не работали: http://railsapps.github.com/openssl-certificate-verify-failed.html
Временное решение (как указано в Ownatik):
Создайте или измените файл с именем .gemrc в своем домашнем пути, включая строку :ssl_verify_mode: 0
Это предотвратит проверку поставщиком SSL сертификатов SSL при попытке установить их.
Для устройств * nix "домашний путь" означает ~/.gemrc
. Вы также можете создать /etc/gemrc
, если хотите. Для Windows XP "домашний путь" означает c:\Documents and Settings\All Users\Application Data\gemrc
. Для Windows 7, C:\ProgramData\gemrc
%USERPROFILE%\.gemrc
также ищет gem
в Windows.
В windows7 вы можете скачать файл cacert.pem из здесь и установить environementvariable SSL_CERT_FILE в путь, где вы храните сертификат, например
SET SSL_CERT_FILE="C:\users\<username>\cacert.pem"
или вы можете установить переменную в script следующим образом: ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"
Заменить < имя пользователя > с вашим собственным именем пользователя.
Реальное решение этой проблемы, если вы используете RVM:
gem update --system
rvm osx-ssl-certs update all
Совет чата до этого совета в проекте RailsApps!
rvm osx-ssl-certs update all
что есть трюк! Спасибо!
rvm osx-ssl-certs update all
у меня rvm osx-ssl-certs update all
работало нормально. Не нужно делать шаг 1.
Для тех из вас, у которых рубин установлен через RVM и требуется быстрое исправление (предпочитая не читать по запросу Бруно), просто попробуйте следующее:
rvm remove 1.9.x (or whatever version of ruby you are using)
rvm pkg install openssl
rvm install 1.9.2 --with-openssl-dir=$rvm_path/usr
Для более подробной информации, вот ссылка, где я нашел решение.
http://railsapps.github.com/openssl-certificate-verify-failed.html
Кстати, мне не пришлось прикасаться к моим сертификатам на Ubuntu.
Лучше всего, это не обходной путь. Он будет загружать драгоценные камни через SSL и сбой, если есть проблема, подобная человеку в середине что намного лучше, чем просто отключить безопасность.
cacert.pem
или $rvm_path/usr/ssl
) действительно правильный путь.
Это исправлено
http://guides.rubygems.org/ssl-certificate-update/
Теперь, когда RubyGems 2.6.x был выпущен, вы можете вручную обновить эту версию.
Загрузить https://rubygems.org/downloads/rubygems-update-2.6.7.gem
Загрузите файл в каталог, который вы можете позже указать (например, корень вашего жесткого диска C:)
Теперь, используя командную строку:
C:\>gem install --local C:\rubygems-update-2.6.7.gem
C:\>update_rubygems --no-ri --no-rdoc
После этого gem -version сообщит о новой версии обновления.
Теперь вы можете безопасно удалить rubygems-update gem:
C:\>gem uninstall rubygems-update -x
Простая инструкция для копирования папок, приведенная здесь о файле .pem
https://gist.github.com/luislavena/f064211759ee0f806c88
Ошибка проверки сертификата
Если вы прочитали предыдущие разделы, вы будете знать, что это значит (и позорить) на вас, если вы этого не сделали.
Нам нужно скачать AddTrustExternalCARoot-2048.pem. Откройте командную строку и введите:
C: > драгоценный камень, который рубигем C:/Ruby21/lib/ruby/2.1.0/rubygems.rb Теперь найдите этот каталог. Внутри того же окна введите часть пути до расширения файла, но вместо этого используйте обратную косую черту:
C: > start C:\Ruby21\lib\ruby \ 2.1.0\rubygems Это откроет окно проводника в указанном нами каталоге.
Шаг 3: Скопируйте новый сертификат доверия
Теперь найдите каталог ssl_certs и скопируйте файл .pem, полученный с предыдущего шага.
Он будет указан в других файлах, таких как GeoTrustGlobalCA.pem.
Вы можете загрузить список сертификатов CA с сайта curl на http://curl.haxx.se/ca/cacert.pem
Затем установите переменную среды SSL_CERT_FILE, чтобы сообщить Ruby о ее использовании. Например, в Linux:
$ SSL_CERT_FILE=~/cacert.pem bundle install
(Ссылка: https://gist.github.com/fnichol/867550)
Вот как вы исправляете эту проблему в Windows:
загрузите файл .perm, затем установите командную строку SSL_CERT_FILE
та же проблема, но с другим драгоценным камнем здесь:
Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3
read server certificate B: certificate verify failed
(https://bb-m.rubygems.org/gems/builder-3.0.0.gem)
An error occured while installing builder (3.0.0), and Bundler cannot continue.
Make sure that `gem install builder -v '3.0.0'` succeeds before bundling.
временное решение: gem install builder -v '3.0.0'
позволяет продолжить bundle install
спасибо to @Alexander.Iljushkin для:
gem update --system --source http://rubygems.org/
После этого пакет еще не сработал, и решение было следующим:
gem install bundler
Мое постоянное исправление для Windows:
Загрузите CACert, сохраните как C:\ruby\ssl_certs\GlobalSignRootCA.pem
из http://guides.rubygems.org/ssl-certificate-update/
Создайте системную переменную с именем " SSL_CERT_FILE", установите значение C:\ruby\ssl_certs\GlobalSignRootCA.pem
.
Повторите попытку: gem install bundler
:
C:\gem sources *** CURRENT SOURCES *** https://rubygems.org/ C:\gem install bundler Fetching: bundler-1.13.5.gem (100%) Successfully installed bundler-1.13.5 1 gem installed
Мне удалось отследить это из-за того, что двоичные файлы, которые загружают rvm
, не очень приятны с OS X OpenSSL, который является старым и больше не используется ОС.
Решением для меня было принудительное компиляцию при установке Ruby через rvm
:
rvm reinstall --disable-binary 2.2
Простейшее решение:
rvm pkg install openssl
rvm reinstall all --force
Voila!
Я получаю немного другую ошибку, хотя, возможно, связанную, на Ubuntu 12.04:
Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=unknown state: sslv3 alert handshake failure (https://d2chzxaqi4y7f8.cloudfront.net/gems/activesupport-3.2.3.gem)
An error occured while installing activesupport (3.2.3), and Bundler cannot continue.
Make sure that `gem install activesupport -v '3.2.3'` succeeds before bundling.
Это происходит, когда я запускаю bundle install
с source 'https://rubygems.org'
в Gemfile.
Это проблема с OpenSSL на Ubuntu 12.04. См. Проблема с Rubygems № 319.
Чтобы исправить это, запустите apt-get update && apt-get upgrade
на Ubuntu 12.04, чтобы обновить OpenSSL.
Для Windows-машины проверьте версию gem с помощью
gem --version
Затем обновите свой камень следующим образом:
Загрузите файл в каталог, который вы можете позже указать (например, корень вашего жесткого диска C:)
Теперь, используя командную строку:
C:\>gem install --local C:\rubygems-update-1.8.30.gem
C:\>update_rubygems --no-ri --no-rdoc
Теперь установка пакета будет успешной без подтверждения проверки сертификата SSL.
Более подробная инструкция здесь
Я получал аналогичную ошибку. Вот как я решил это: в вашем каталоге путей проверьте Gemfile. Измените источник в gemfile на http вместо https и сохраните его. Это может установить пакетщик без сертификата SSL.
Загрузите rubygems-update-2.6.7.gem.
Теперь, используя командную строку:
C:\>gem install --local C:\rubygems-update-2.6.7.gem
C:\>update_rubygems --no-ri --no-rdoc
После этого gem --version
должен сообщить о новой версии обновления.
Теперь вы можете безопасно удалить rubygems-update gem:
C:\>gem uninstall rubygems-update -x
Removing update_rubygems
Successfully uninstalled rubygems-update-2.6.7
Недавно я столкнулся с этой проблемой и выполнил шаги, описанные здесь здесь. Возможно, вы не будете указывать на правильный сертификат OpenSSL. После запуска:
rvm osx-ssl-certs status all
rvm osx-ssl-certs update all
и
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
пакет завершился!
Мне пришлось переустановить openssl:
brew uninstall --force openssl
brew install openssl
Это сработало для меня:
gem install --local [path to downloaded gem file]
update_rubygems
gem --version
Единственное, что работало для меня в старой системе windows и версии ruby 1.9, - это загрузка файла cacert из http://guides.rubygems.org/ssl-certificate-update/
И затем под командой ниже перед запуском пакета установите
bundle config --global ssl_ca_cert /path/to/file.pem
rails-assets
Если вы использовали https://rails-assets.org/
для управления вашими активами, никакие ответы вам не помогут. Даже преобразование в http
не поможет.
Простейшее исправление использует этот источник вместо http://insecure.rails-assets.org
. Это было упомянуто на странице .
Следует отметить, что если вы захватываете драгоценные камни из источника, которому доверяет сертификат SSL внутреннему центру сертификации (или вы подключаетесь к внешнему источнику через веб-прокси-сервер компании с проверкой SSL), укажите переменную env_vi_ERVER_FILE ваша цепочка сертификатов. Скорее всего, вам просто нужно экспортировать свой корневой сертификат из хранилища сертификатов (System Keychain на macOS) в доступное местоположение из вашей оболочки i.e.:
export SSL_CERT_FILE=~/RootCert.pem