Как решить проблему с подтверждением сертификата в Windows?

Я пытаюсь использовать signet для OAuth для сервисов Google. И получите эту ошибку:

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed 

Следуя этим вопросам:

  • SSL_connect возвращен = 1 errno = 0 state = SSLv3 считать сертификат сервера B: проверка сертификата не выполнена
  • OmniAuth & Facebook: проверка сертификата не выполнена

Похоже, решение – либо исправить ca_path либо установить VERIFY_NONE для SSL .

ca_path исправление ca_path работает только в Linux (установка порта), и исправление для VERIFY_NONE похоже, для faraday.

Есть ли решение для Windows / signet gem?

На самом деле лучшим способом, который я нашел, чтобы решить это в Windows для самого Ruby, а не только для одного драгоценного камня, является следующее:

  1. Загрузите https://curl.haxx.se/ca/cacert.pem в c: \ railsinstaller \ cacert.pem. Убедитесь, что вы сохранили его как .pem-файл, а не текстовый файл.
  2. Перейдите на свой компьютер -> Дополнительные настройки -> Переменные среды
  3. Создайте новую Системную переменную:

    Переменная: SSL_CERT_FILE Значение: C: \ RailsInstaller \ cacert.pem

  4. Закройте все приглашения командной строки, включая командную строку сервера Rails и т. Д.

  5. Запустите новое приглашение ruby ​​irb и попробуйте выполнить следующее:

     $irb>require 'open-uri' $irb>open('https://www.gmail.com') 

Теперь все должно работать отлично.

Решение для Windows, которое я собрал из нескольких разных ответов:

  1. Загрузите https://curl.haxx.se/ca/cacert.pem и поместите его в YOUR_APP / lib / assets (или где угодно)
  2. В config / initializers / omniauth.rb :

      #config/initializers/omniauth.rb Rails.application.config.middleware.use OmniAuth::Builder do provider :facebook, CUSTOMER_KEY, CUSTOMER_SECRET, {client_options: {ssl: {ca_file: Rails.root.join('lib/assets/cacert.pem').to_s}}} end 
  3. Очевидно, перезапустите сервер.

Сноски: вы могли бы вырезать много ненужных сертификатов в файле cacert.pem, чтобы уменьшить размер. Если вам нужно только это решение для разработки, вы можете сохранить файл за пределами своего проекта и сделать if Rails.env.development? _provider строка с client_options hash_ else _provider строка без client_options hash_ end

После слишком большого поиска и потери времени я нашел очень простое решение, чтобы исправить эту проблему в Ruby с Windows.

Два простых шага:

  1. В командной строке введите: C:\gem install certified

  2. В вашем файле rb add: require 'certified'

Вот и все.

Обновление оболочки управления пакетами rubygems решило эту проблему для меня в Windows 7.

https://rubygems.org/pages/download

 gem update --system # may need to be administrator or root 

да, я установил файл omniouth.rb в папку инициализаторов:

 provider :facebook, FACEBOOK_KEY, FACEBOOK_SECRET, {:client_options => {:ssl => {:verify => false}}} 

и теперь это выглядит нормально. Но не используйте это для производства .

Использование URL http: // вместо https: // сделать это проще для вас

Измените источник драгоценных камней на http://rubygems.org/ , используя следующую команду в командной строке ruby

 gem sources -a http://rubygems.org/ 

Перейдите на страницу загрузки обновлений 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 

Добавляя решение 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

У меня была эта ошибка, пытаясь установить rails 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 попытался снова установить rails 5

 gem install rails --version 5.0.0 

работал как шарм!

Я получил информацию от: http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages

Я смог устранить описанную выше настройку PATH или SYSTEM VARIABLE, импортировав сертификат в качестве доверенного органа.

  1. Вызвать certmgr.msc
  2. Щелкните правой кнопкой мыши папку доверенного корневого центра сертификации.
  3. Выберите «Все задачи»
  4. Выберите «Импорт»
  5. В раскрывающемся списке «Тип файла» выберите «Все файлы» и выберите файл cacert.pem.
  6. Вы должны получить сообщение «Импортировать успешно»

Я верю, что правильный ответ заключается в обновлении установщика gem: rubygems-update . Объяснение, почему это необходимо, можно найти по адресу: Ssl Certificate Updates

сохраните файл cacert.pmp с https://curl.haxx.se/ca/cacert.pem, а затем добавьте этот файл в папку с папкой yourruby \ lib \ ruby ​​\ 2.3.0 \ rubygems \ ssl_certs

например: C: \ Ruby23 \ lib \ ruby ​​\ 2.3.0 \ rubygems \ ssl_certs

Это помогло мне: 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') 

Надеюсь, это поможет.

Мне также пришлось столкнуться с этой проблемой, когда я установил старые версии ruby. Когда я установил последнюю версию Ruby, эта проблема исчезла. Поэтому в основном сертификат SSL необходимо обновить.

Для людей, которые используют rails 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}} } 
  • Регистрация нескольких хранилищ ключей в JVM
  • Как вы подписываете запрос на подпись сертификата в своем сертификационном центре?
  • Недопустимый самоподписанный SSL-сертификат - «Тема альтернативного имени отсутствует»
  • Как сделать HTTPS POST с Android?
  • Java SSL: как отключить проверку имени хоста
  • ssl.SSLError: версия протокола предупреждения tlsv1
  • Trust Anchor не найден для подключения SSL для Android
  • Самостоятельный SSL-сертификат Tomcat Server / Client
  • Проблемы с использованием Maven и SSL за прокси-сервером
  • Правильное закрытие SSLSocket
  • java - игнорировать сертификат ssl
  • Давайте будем гением компьютера.