簡體   English   中英

軟件包安裝失敗,並顯示SSL證書驗證錯誤

[英]bundle install fails with SSL certificate verification error

當我在Centos 5.5上為Rails 3項目運行bundle install ,它失敗並出現錯誤:

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時(通過gem install multi_json -v '1.3.2' ),它可以工作。 其他幾個寶石也會發生相同的問題。 我使用RVM(1.12.3),ruby 1.9.2,bundler 1.1.3。

如何解決?

更新資料

現在,我已經從這個答案中充分挖掘了..err,每個人都應該知道應該已經解決了這個問題。

重新:通過Ownatik再次捆綁安裝失敗,出現SSL證書驗證錯誤

gem update --system

我的答案仍然是正確的,如果最終對您不起作用,請留在下面以供參考。


老實說,最好的臨時解決方案是

[...]在您的gemfile中使用rubygems的非SSL版本作為臨時解決方法。

通過用戶Ownatik

它們的意思是在Rails應用程序目錄更改中Gemfile的頂部

source 'https://rubygems.org'

source 'http://rubygems.org'

需要注意的是第二個版本是http而不是http 小號

將ssl gem源替換為non-ssl作為臨時解決方案:

原因是古老的紅寶石。 您需要首先使用非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

這將防止捆綁程序在嘗試安裝gem時檢查其SSL證書。

對於* nix設備,“主路徑”表示~/.gemrc 如果願意,還可以創建/etc/gemrc 對於Windows XP,“主路徑”表示c:\\Documents and Settings\\All Users\\Application Data\\gemrc 對於Windows 7, C:\\ProgramData\\gemrc

在Windows7上,您可以從此處下載cacert.pem文件,並將環境變量SSL_CERT_FILE設置為存儲證書的路徑,例如

SET SSL_CERT_FILE="C:\users\<username>\cacert.pem"

或者您可以在腳本中設置變量,例如ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"

將<username>替換為您自己的用戶名。

如果使用的是RVM,則此問題的真正解決方案是:

  1. 更新rubygems: gem update --system
  2. 使用RVM刷新SSL證書: rvm osx-ssl-certs update all

在RailsApps項目上的提示

對於那些通過RVM安裝了ruby並且想要快速修復(不按照Bruno的要求閱讀)的人,請嘗試以下操作:

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下載gem,如果出現類似中間人攻擊的問題,則該失敗將失敗,這比關閉安全性要好得多。

您可以從curl的網站上下載CA證書列表,網址為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

該問題已解決

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:> gem其中的rubygems C:/Ruby21/lib/ruby/2.1.0/rubygems.rb現在,讓我們找到該目錄。 在同一窗口中,輸入文件擴展名之前的路徑部分,但改用反斜杠:

C:>啟動C:\\ Ruby21 \\ lib \\ ruby​​ \\ 2.1.0 \\ ruby​​gems這將在我們指定的目錄內打開一個Explorer窗口。

步驟3:復制新的信任證書

現在,找到ssl_certs目錄並復制從上一步中獲得的.pem文件。

它將與其他文件(如GeoTrustGlobalCA.pem)一起列出。

同樣的問題,但是這里有不同的寶石:

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成為可能

最簡單的解決方案:

rvm pkg install openssl
rvm reinstall all --force

瞧!

這是在Windows上解決此問題的方法:

下載.perm文件,然后在命令提示符下設置SSL_CERT_FILE

https://gist.github.com/fnichol/867550

在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.

當我在Gemfile中使用source 'https://rubygems.org'運行bundle install時,就會發生這種情況。

這是Ubuntu 12.04上的OpenSSL問題。 參見Rubygems問題#319

要解決此問題,請在Ubuntu 12.04上運行apt-get update && apt-get upgrade升級OpenSSL。

我可以rvm下載的二進制文件不能在OS X的OpenSSL上很好地使用的事實,因為OpenSSL是舊的並且不再被OS使用。

對我來說,解決方案是在通過rvm安裝Ruby時強制編譯:

rvm reinstall --disable-binary 2.2

我對Windows的永久修復:

  1. http://guides.rubygems.org/ssl-certificate-update/下載CACert ,另存為C:\\ruby\\ssl_certs\\GlobalSignRootCA.pem

  2. 創建名為“ SSL_CERT_FILE ”的系統變量,並將其設置為C:\\ruby\\ssl_certs\\GlobalSignRootCA.pem

  3. 再試一次: 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 

感謝@ Alexander.Iljushkin:

gem update --system --source http://rubygems.org/

在那個捆綁器仍然失敗之后,解決方案是:

gem install bundler

我遇到了類似的錯誤。 這是我解決此問題的方法:在您的路徑目錄中,檢查Gemfile。 將gemfile中的源代碼編輯為http而不是https並保存。 這可能會安裝捆綁程序而沒有SSL證書問題。

對於Windows計算機,請使用以下命令檢查您的gem版本

gem --version

然后按照以下步驟更新您的gem:

請將該文件下載到以后可以指向的目錄中(例如,硬盤C:的根目錄)

現在,使用命令提示符:

C:\>gem install --local C:\rubygems-update-1.8.30.gem
C:\>update_rubygems --no-ri --no-rdoc

現在,捆綁安裝將成功完成,而不會出現SSL證書驗證錯誤。

更詳細的說明在這里

這對我有用:

  • https://rubygems.org/pages/download下載最新的gem
  • 使用gem install --local [path to downloaded gem file]
  • 使用update_rubygems更新gem
  • 使用gem --version檢查您是否在最新的gem版本上

我不得不重新安裝openssl:

brew uninstall --force openssl
brew install openssl

我剛遇到這個問題,並按照此處概述的步驟進行操作。 您可能沒有指向正確的OpenSSL證書。 運行后:

rvm osx-ssl-certs status all
rvm osx-ssl-certs update all

export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

捆綁完成了!

下載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

請注意,如果您要從內部證書頒發機構信任SSL證書的來源中獲取寶石(或者正在通過具有SSL檢查的公司Web代理連接到外部來源),請將SSL_CERT_FILE env變量指向證書鏈。 這很可能只需要將您的根證書從證書存儲(macOS上的系統鑰匙串)導出到您的Shell可以訪問的位置,即:

export SSL_CERT_FILE=~/RootCert.pem

如果您正在使用rails-assets

如果您使用https://rails-assets.org/來管理資產,那么沒有答案會幫助您。 即使轉換為http也無濟於事。

最簡單的修復方法是使用此資源http://insecure.rails-assets.org 這已經在他們的主頁中提到了。

對我來說,在舊版Windows系統和ruby 1.9版本上唯一起作用的是從http://guides.rubygems.org/ssl-certificate-update/下載cacert文件

然后在運行捆綁安裝之前運行以下命令

bundle config --global ssl_ca_cert /path/to/file.pem

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM