Как решить проблему с подтверждением сертификата в Windows?
Я пытаюсь использовать signet для OAuth для сервисов Google. И получите эту ошибку:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Следуя этим вопросам:
Кажется, что решение - либо исправить ca_path
, либо установить VERIFY_NONE
для SSL.
Исправленное исправление ca_path
работает только в Linux (установка порта), а исправление для VERIFY_NONE
похоже на faraday.
Есть ли решение для Windows/signet gem?
Ответы
Ответ 1
На самом деле лучший способ найти это в Windows для самого Ruby, а не только для одного драгоценного камня, заключается в следующем:
- Загрузите https://curl.haxx.se/ca/cacert.pem в c:\railsinstaller\cacert.pem. Убедитесь, что вы сохранили его как .pem файл, а не текстовый файл.
- Перейдите на свой компьютер → Дополнительные параметры → Переменные среды
-
Создайте новую Системную переменную:
Переменная: SSL_CERT_FILE
Значение: C:\RailsInstaller\cacert.pem
-
Закройте все ваши приглашения командной строки, включая командную строку сервера Rails и т.д.
-
Запустите новое приглашение ruby irb и попробуйте выполнить следующее:
$irb>require 'open-uri'
$irb>open('https://www.gmail.com')
Теперь все должно работать отлично.
Ответ 2
Решение для Windows, которое я собрал из нескольких разных ответов:
Сноска:
Возможно, вы сможете вырезать много ненужных сертификатов в файле cacert.pem, чтобы уменьшить размер. Если вам нужно только это решение для разработки, вы можете сохранить файл вне своего проекта и сделать строку if Rails.env.development?
_provider с помощью команды client_options hash_ else
_provider без client_options hash_ end
Ответ 3
После слишком большого поиска и потери времени я нашел очень простое решение для устранения этой проблемы в Ruby с Windows.
Два простых шага:
Что это.
Ответ 4
Обновление инфраструктуры управления пакетами rubygems решило эту проблему для меня в Windows 7.
https://rubygems.org/pages/download
gem update --system # may need to be administrator or root
Ответ 5
да, я установил файл omniouth.rb в папку инициализаторов:
provider :facebook, FACEBOOK_KEY, FACEBOOK_SECRET, {:client_options => {:ssl => {:verify => false}}}
и теперь это работает нормально. Но не использовать это для производства.
Ответ 6
Использование URL http://вместо https://сделать это проще для вас
Измените источник драгоценного камня на http://rubygems.org/, используя следующую строку команды в вашей рубиновой командной строке
gem sources -a http://rubygems.org/
Ответ 7
Перейдите на страницу загрузки обновлений rubygems: https://rubygems.org/gems/rubygems-update
Нажмите ссылку "Загрузить", и вы загрузите файл rubygems-update-2.6.7.gem. В командной строке перейдите в каталог, в который вы загрузили файл .gem, и введите:
gem install rubygems-update-2.6.7.gem
(или независимо от имени файла, если более новая версия)
Затем введите:
update_rubygems
Вы можете проверить его с помощью:
gem --version
Ответ 8
Добавление в решение DevDude, но с использованием Windows Powershell:
Загрузите http://curl.haxx.se/ca/cacert.pem в c:\railsinstaller\cacert.pem
В командной строке командной строки:
$env:SSL_CERT_FILE = 'c:\RailsInstaller\cacert.pem'
Тогда я смог успешно выполнить gem update
Примечание. Вы можете просто определить эту переменную среды в своем профиле notepad $profile
Ответ 9
У меня была эта ошибка при попытке настроить рельсы 5 на машине Windows, оказалось, что мне пришлось обновить версию rubygem до 2.6.7, а затем она сработала.
шаг 1 скачать rubygem снизу
https://rubygems.org/downloads/rubygems-update-2.6.7.gem
шаг 2 - установите, указав на загруженные рубигемы
gem install --local C:\rubygems-update-2.6.7.gem
шаг 3 - проверить новую версию 2.6.7
gem --version
шаг 4 - теперь безопасно удалите рубизм-обновление gem
gem uninstall rubygems-update -x
шаг 5 попытался снова установить рельсы 5
gem install rails --version 5.0.0
работал как шарм!
Я получил информацию от:
http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages
Ответ 10
Мне удалось устранить описанную выше настройку PATH или SYSTEM VARIABLE, импортировав сертификат в качестве доверенного органа.
- Вызов certmgr.msc
- Щелкните правой кнопкой мыши папку доверенного корневого центра сертификации.
- Выберите "Все задачи"
- Выберите "Импорт"
- Выберите все файлы в раскрывающемся списке типов файлов и выберите файл cacert.pem.
- Вам следует получить сообщение "Импорт успешно"
Ответ 11
Я верю, что правильный ответ заключается в обновлении установщика gem: rubygems-update. Объяснение, почему это необходимо, можно найти по адресу: Обновления сертификатов Ssl
Ответ 12
сохраните файл cacert.pmp из https://curl.haxx.se/ca/cacert.pem, а затем добавьте этот файл в папку с папкой yourruby\lib\ruby \ 2.3 0,0\RubyGems\ssl_certs
например: C:\Ruby23\lib\ruby \ 2.3.0\rubygems\ssl_certs
Ответ 13
Это помогло мне:
https://coderwall.com/p/ubl6iw/fix-ssl_connect-returned-1-errno-0-state-sslv3-read-server-certificate-b-certificate-verify-failed-openssl-ssl-sslerror
Мой проект ruby on rails отправляет данные в api внутри, и он не может проверить внутренний сертификат.
Эти линии помогли:
require 'https'
http = Net::HTTP.new('example.com', 443)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.cert_store = OpenSSL::X509::Store.new
http.cert_store.set_default_paths
http.cert_store.add_file('/path/to/internal.cert.pem')
Надеюсь, это поможет.
Ответ 14
Мне также пришлось столкнуться с этой проблемой, когда я установил старые версии ruby. Когда я установил последнюю версию Ruby, эта проблема исчезла. Поэтому в основном сертификат SSL необходимо обновить.
Ответ 15
Для людей, которые используют рельсы 4.
Добавьте это в devise.rb
require "omniauth-google-oauth2"
config.omniauth :google_oauth2, "CLIENT_ID", "CLIENT_SECRET", { access_type: "offline", approval_prompt: "", :client_options => {:ssl => {:verify => false}} }