Я использую Authlogic-Connect для сторонних логинов. После выполнения соответствующих миграций логины Twitter / Google / Yahoo, похоже, работают нормально, но логин Facebook выдает исключение:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Журнал разработки показывает
OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed):
app/controllers/users_controller.rb:37:in `update'
Пожалуйста, предложите ..
Ответы:
Я столкнулся с подобной проблемой при попытке использовать генератор JQuery для Rails 3
Я решил это так:
Получите пакет CURL Certificate Authority (CA). Вы можете сделать это с:
sudo port install curl-ca-bundle
[если вы используете MacPorts]wget http://curl.haxx.se/ca/cacert.pem
Исполнить код рубин , который пытается проверить сертификат SSL:
SSL_CERT_FILE=/opt/local/etc/certs/cacert.pem rails generate jquery:install
. В вашем случае вы хотите либо установить это как переменную окружения где-нибудь, где сервер его подхватит, либо добавить что-то вродеENV['SSL_CERT_FILE'] = /path/to/your/new/cacert.pem
вашего файла environment.rb.Вы также можете просто установить файлы CA (я не пробовал) в ОС - есть длинные инструкции здесь - это должно работать подобным образом, но я не пробовал это лично.
По сути, проблема, с которой вы сталкиваетесь, заключается в том, что некоторые веб-службы отвечают сертификатом, подписанным против CA, который OpenSSL не может проверить.
источник
export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cert.pem
sudo curl http://curl.haxx.se/ca/cacert.pem >> /usr/local/etc/cacert.pem
а затемexport SSL_CERT_FILE=/usr/local/etc/cacert.pem
SSL_CERT_FILE=/usr/local/etc/openssl/cert.pem
в.env
файл своего приложения и вуаля - все счастливы.Если вы используете RVM в OS X, вам, вероятно, нужно запустить это:
Более подробная информация здесь: http://rvm.io/support/fixing-broken-ssl-certificates
И вот полное объяснение: https://github.com/wayneeseguin/rvm/blob/master/help/osx-ssl-certs.md
Обновить
В Ruby 2.2 вам может потребоваться переустановить Ruby из исходного кода, чтобы это исправить. Вот как (замените
2.2.3
на вашу версию Ruby):Благодарим https://stackoverflow.com/a/32363597/4353 и Иана Коннора .
источник
rvm reinstall 2.2.0 --disable-binary
но затем вы должны установить и начать все заново.Вот как вы можете это исправить в Windows: https://gist.github.com/867550 (создатель Fletcher Nichol)
Выдержка:
источник
Ruby не может найти никаких корневых сертификатов для доверия.
Посмотрите на это сообщение в блоге для решения: " Ruby 1.9 и ошибка SSL ".
источник
Причиной возникновения этой ошибки в OSX является установленный rvm ruby.
Если вы столкнулись с этой проблемой на OSX, вы можете найти действительно широкое объяснение этого в этом блоге:
http://toadle.me/2015/04/16/fixing-failing-ssl-verification-with-rvm.html
Короткая версия заключается в том, что для некоторых версий Ruby RVM загружает предварительно скомпилированные двоичные файлы, которые ищут сертификаты в неправильном месте. Заставив RVM загрузить исходный код и скомпилировать его на своем компьютере, вы убедитесь, что конфигурация для местоположения сертификата правильная.
Команда для этого:
если у вас уже есть рассматриваемая версия, вы можете переустановить ее с помощью:
(очевидно, замените вашу версию ruby по мере необходимости).
источник
\curl -sSL https://get.rvm.io | bash -s stable --autolibs=homebrew
а затемrvm install <ruby-version> --disable-binary
В какой-то момент я также сделал, такrvm get head
как это некоторые передовые проблемыSSL_CERT_FILE
. Послеrvm install 2.2.0 --disable-binary
этого вопрос отсортирован.Проблема в том, что ruby не может найти корневой сертификат для доверия. По состоянию на 1,9 рубин проверяет это. Вам нужно убедиться, что у вас есть сертификат curl в вашей системе в виде файла pem. Вам также необходимо убедиться, что сертификат находится в том месте, где его ожидает ruby. Вы можете получить этот сертификат на ...
Если вы являетесь пользователем RVM и OSX, местоположение файла сертификата будет зависеть от того, какую версию ruby вы используете. Явное указание пути с помощью: ca_path - ПЛОХАЯ идея, поскольку ваш код не будет переносимым, когда он попадет в производство. Там вы хотите предоставить ruby сертификат в расположении по умолчанию (и предположим, что ваши разработчики знают, что они делают). Вы можете использовать dtruss, чтобы определить, где система ищет файл сертификата.
В моем случае система искала файл сертификата в
Однако система MACOSX ожидает сертификат в
Я скопировал скачанный сертификат по этому пути, и он работал. НТН
источник
~/.rvm/usr/ssl/cert.pem
cacert.pem
на OS X. OS X не используетcacert.pem
. Системные и пользовательские сертификаты хранятся в KeyChain. Рубин следует интегрировать с брелка на OS X.Новый сертифицированный драгоценный камень разработан, чтобы исправить это:
https://github.com/stevegraham/certified
источник
bundle
явно добавил,require "certified"
просто чтобы быть уверенным, и ничего не меняется. Чего мне не хватает?cacert.pem
на OS X. OS X не используетcacert.pem
. Системные и пользовательские сертификаты хранятся в KeyChain. Ruby должен интегрироваться с KeyChain на OS X. OpenSSL никогда не распространялcacert.pem
. Мне не ясно, почему любое программное обеспечение откладывает для этого OpenSSL.Просто добавьте gem «Certified» в ваш gemfile и запустите пакетную установку.
источник
В Mac OS X Lion с последней версией Macport:
Затем повторно запустите неудавшуюся работу.
Обратите внимание, что местоположение файла сертификата изменилось с тех пор, как Эрик Дж ответил 12 мая.
источник
export SSL_CERT_FILE=/usr/local/etc/openssl/cacert.pem
в свой файл .profile или .bashrcОдин вкладыш исправляет это для Windows в приглашении администратора
choco install wget
(сначала посмотрите chocolatey.org )Или просто сделайте это:
Метод Миланио:
источник
Ну, это сработало для меня
Что-то не так с реализацией openssl моей Ubuntu 12.04
источник
curl -O http://curl.haxx.se/ca/cacert.pem
,mv cacert.pem cert.pem
,mv cert.pem $rvm_path/usr/ssl
Зная, что это довольно слабое решение, я все же делюсь этим, потому что кажется, что очень немногие люди, отвечающие здесь, используют Windows , и я думаю, что некоторые пользователи Windows (включая меня) оценят простой и интуитивно понятный подход.
Это говорит о том, где ваш openssl ищет файл сертификата. Меня зовут не Луис, но мое было
C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0l/ssl/cert.pem
. Путь может отличаться в зависимости от каждой среды (например,openknapsack
вместоluislavena
).Путь не изменился даже после того, как
set SSL_CERT_FILE=C:\foo\bar\baz\cert.pem
через консоль, поэтому ... Я создал каталогC:\Users\Luis\Code\luislavena\knap-build\var\knapsack\software\x86-windows\openssl\1.0.0l\ssl
на своем локальном диске и поместил в него файл сертификата.Хм, как это, это, безусловно, будет работать.
источник
Я пытаюсь установить
curl-ca-bundle
с помощьюbrew
, но пакет больше не доступен:Решение, которое работало для меня на Mac, было:
Добавьте эту строку в свой
~/.bash_profile
(или~/.zshrc
для zsh):Затем обновите свой терминал:
источник
export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem
~/.bash_profile
, он оставляет напоминание о том, что было добавлено (и, что особенно важно, где), когда требуются дополнительные обновления.Вот еще один вариант для отладки.
Никогда не используйте его в любой производственной среде, так как это сведет на нет преимущества использования SSL в первую очередь. Это возможно только в вашей локальной среде разработки.
источник
У меня была такая же проблема во время работы над проектом Ruby. Я использую Windows 7 64bit.
Я решил это путем:
источник: https://gist.github.com/fnichol/867550
источник
Самый простой ответ, который работал для меня, был такой
И вуаля !!!
источник
OS X 10.8.x с домашним пивом:
источник
Затем, как предполагает этот пост в блоге,
« Как вылечить Net :: HTTP рискованное поведение по умолчанию HTTPS »
Вы можете установить
always_verify_ssl_certificates
гем, который позволит вам установить значение по умолчанию дляca_file
.источник
Это сработало для меня. Если вы используете rvm и brew:
источник
Я столкнулся с этой проблемой, и предложенное исправление
rvm osx-ssl-certs update all
не сработало, несмотря на то, что я являюсь пользователем RVM в OSX.Исправление, которое работало для меня, переустанавливало последнюю версию openssl:
источник
Я исправил эту проблему, запустив это в терминале. Полная рецензия доступна здесь
источник
OSX решение:
установить последнюю стабильную версию rvm
используйте команду rvm для автоматического разрешения сертификатов
источник
Если вы запускаете приложение rails локально, просто добавьте эту строку внизу application.rb.
После этого вы можете использовать приложение без каких-либо проблем. Вы можете назвать это взломом, но это не рекомендуется. Используйте только тогда, когда вам нужно работать локально
источник
Вот что я сделал, это помогло, если у вас есть проблемы с леопардом.
Мой сертификат был стар и нуждался в обновлении. Я скачал это:
http://curl.haxx.se/ca/cacert.pem
Затем заменил мой сертификат, который был найден здесь, на Леопарде:
Перезагрузите все, что у вас есть, и вы должны быть готовы!
источник
Просто потому, что инструкции немного отличались от того, что сработало для меня, я решил добавить свои 2 цента:
Я на OS X Lion и использую macports и rvm
Я установил curl-ca-bundle:
Затем я настроил свой конфигурационный файл omniauth следующим образом:
источник
ca-bundle.crt
) и использовать Google Internet Authority G2 в:ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"}
. Это единственное, что необходимо для сертификации соединений с Google.Если у вас есть символическая ссылка в / usr / local / etc / openssl, указывающая на cert.pem, попробуйте сделать это:
источник
Для меня сработала комбинация ответов, а именно:
источник
У меня были проблемы в течение нескольких дней, и я взламывал их. Эта ссылка оказалась чрезвычайно полезной для меня. Это помогло мне сделать успешное обновление SSL на MAC OS X 9.
источник
Иногда это не всегда проблема rvm в MAC OSX, если вы удалите .rvm, проблема все еще (особенно при резервном копировании данных из timemachine), вы можете попробовать этот способ.
источник
Добавление
gem 'certified', '~> 1.0'
к моемуGemfile
и запускbundle
решил эту проблему для меня.источник