web-dev-qa-db-ja.com

Windowsで「証明書の検証に失敗しました」を解決するにはどうすればよいですか?

OAuth= Googleサービスへの署名を使用しようとしています。このエラーが発生します。

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

これらの質問に続いて:

解決策はca_pathを修正するか、または sSLのVERIFY_NONEを設定します

投稿されたca_path修正はLinux(ポートインストール)でのみ機能し、VERIFY_NONEの修正はファラデーのようです。

Windows/signet gemのソリューションはありますか?

73
mbdev

実際、私はこれをWindowsでRuby 1つのgemではなく、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')
    

すべて正常に動作するはずです。

187
DevDude

いくつかの異なる回答からまとめた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? _client_optionsハッシュのあるプロバイダー行_ else _client_optionsハッシュのないプロバイダー行_ end

27
Arcolye

あまりにも多くの検索と時間の浪費の後、この問題を修正するための非常に簡単な解決策を見つけましたRuby with Windows。

2つの簡単なステップ:

  1. コマンドプロンプトで書き込み:C:\gem install certified

  2. rbファイルに次を追加します:require 'certified'

それでおしまい。

20

Rubygemsパッケージ管理フレームワークを更新すると、Windows 7でこの問題が解決しました。

https://rubygems.org/pages/download

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

はい、initializersフォルダーのomniouth.rbファイルを次のように設定しました。

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

そして、これは今ではうまくいくようです。ただし、本番環境では使用しないでください

8
Tom

Https://の代わりにhttp:// URLを使用すると、これが簡単になります

Rubyコマンドラインで次のコマンドラインを使用して、gemソースを http://rubygems.org/ に変更します。

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

Rubygems-updateダウンロードページにアクセスします。 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
2
user4396176

DevDudeのソリューションに追加しますが、Windows Powershellを使用します。

http://curl.haxx.se/ca/cacert.pem をc:\ railsinstaller\cacert.pemにダウンロードします

PowerShellプロンプトで:

$env:SSL_CERT_FILE = 'c:\RailsInstaller\cacert.pem'

その後、gem update正常に

注:プロファイルでその環境変数を簡単に定義できますnotepad $profile

1
df2k2

WindowsマシンでRails 5をセットアップしようとしたときにこのエラーが発生したため、rubygemバージョンを2.6.7に更新しなければならなかったことがわかりました。

ステップ1以下からrubygemをダウンロードします

https://rubygems.org/downloads/rubygems-update-2.6.7.gem

ステップ2-ダウンロードしたrubygemsを指定してインストールする

gem install --local C:\rubygems-update-2.6.7.gem

ステップ3-新しいバージョンが2.6.7であることを確認します

gem --version

ステップ4-rubygems-update gemを安全にアンインストールします

gem uninstall rubygems-update -x

ステップ5でインストールを試みましたRails 5 again

gem install Rails --version 5.0.0

魔法のように働いた!

私はから情報を得ました: http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages

1
Kingsley Ijomah

古いRuby=バージョン。最新のRubyバージョンをインストールすると、この問題はなくなりました。したがって、基本的にSSL証明書が必要でした。更新します。

0
kishor.j

正解は、gemインストーラーを更新することだと思います: rubygems-update 。これが必要な理由の説明は、次の場所にあります。 Ssl Certificate Updates

0
FatherShawn

これは私を助けました: https://coderwall.com/p/ubl6iw/fix-ssl_connect-returned-1-errno-0-state-sslv3-read-server-certificate-b-certificate-verify-failed- openssl-ssl-sslerror My 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')

これが役立つことを願っています。

https://curl.haxx.se/ca/cacert.pem からcacert.pmpファイルを保存してから、このファイルをyourruby-installation folder\lib\Ruby\2.3.0\ruby​​gemsの場所に追加します\ ssl_certs

例:C:\ Ruby23\lib\Ruby\2.3.0\ruby​​gems\ssl_certs

0
nikbe28

証明書を信頼できる機関としてインポートすることで、上記のPATHまたはSYSTEM VARIABLE設定を削除できました。

  1. Certmgr.mscを呼び出す
  2. [信頼されたルート証明機関]フォルダーを右クリックします。
  3. 「すべてのタスク」を選択します
  4. 「インポート」を選択します
  5. ファイルタイプドロップダウンで[すべてのファイル]を選択し、cacert.pemファイルを選択します。
  6. 「インポートに成功しました」というメッセージが表示されます。
0
Charles Owen