SSL 인증서 확인 오류로 번들 설치 실패


264

bundle installCentos 5.5에서 Rails 3 프로젝트를 실행할 때 오류와 함께 실패합니다.

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 install multi_json -v '1.3.2'하면 작동합니다. 다른 여러 보석에서도 동일한 문제가 발생합니다. RVM (1.12.3), ruby ​​1.9.2, bundler 1.1.3을 사용합니다.

고치는 방법?


같은 문제에 직면. 그러나 다른 gem : Gem :: RemoteFetcher :: FetchError : SSL_connect 리턴 = 1 errno = 0 state = SSLv3 서버 인증서 읽기 B : 인증서 확인 실패 ( bb-m.rubygems.org/gems/activeresource-3.2.3.gem )
Sathish

4
같은 상황에서 같은 오류가 발생했습니다. 이러한 다른 응답을 고려할 때 서버 측 문제라고 생각합니다.
asfallows

Rails 5에서도 비슷한 문제가있었습니다. source "https://rubygems.org''Gemfile 을 추가 하고 'gem update --system'을 실행 하여 문제를 해결했습니다 . 자세한 내용은 여기를 참조 하십시오 .
Nesha Zoric

네샤, 그 수정은 나를 위해 일했다. 감사합니다!
마틴 마리노

답변:


310

최신 정보

이제 나는이 답변에서 충분히 채굴 된 wh..err를 찾았습니다. 모든 사람들은 이것이 수정되어야한다는 것을 알아야합니다.

다시 : Ownatik을 통해 다시 SSL 인증서 확인 오류와 함께 번들 설치 실패

gem update --system

내 대답은 여전히 ​​정확하며 아래에 나와서 참조하지 않는 경우 참조하십시오.


솔직히 가장 좋은 임시 해결책은

[...] 임시 해결 방법으로 gemfile에 ssl이 아닌 rubygems 버전을 사용하십시오.

사용자 Ownatik를 통해

이것이 의미하는 바는 GemfileRails 애플리케이션 디렉토리 변경 의 맨 위에 있습니다.

source 'https://rubygems.org'

source 'http://rubygems.org'

참고 두 번째 버전인지 HTTP http 대신


1
나는 이것이 처음에했던 일이기 때문에이 대답을 받아들입니다. 나중에 배포 전략을 변경했습니다. 이제 다른 서버에서 응용 프로그램을 번들로 실행 한 다음 ( vendor디렉터리에 gem 포함 ) 질문에 쓴 서버 에 복사합니다 .
mrzasa

6
이것은 나를 위해 작동하지 않았습니다. 아래 @fbernier가 제공 한 링크 가 나를 위해 수정했습니다.
Scott Fister

5
작동하지 않습니다. 이것을 실행하면 Latest version currently installed. Aborting. 다른 아이디어가 출력 됩니까?
Matt Huggins

1
나 같은 새로운 사람들을 위해 소스를 바꾸는 관점에서. 이 파일이 응용 프로그램 디렉토리에 있음을 지정합니다. railsinstaller 디렉토리에서 찾고있었습니다. 어쨌든, 나는 소스를 바꾸었고 마침내 작동했습니다. 업데이트를 실행하려고 할 때 인증서 오류가 발생합니다. (
Brian

2
gem update --system정확히 같은 인증서 오류와 함께 실패 : \
BlueRaja-Danny Pflughoeft

226

임시 솔루션으로 SSL gem 소스를 비 SSL로 교체하십시오.


8
OMG는 매력처럼 일했습니다! 회사 프록시 뒤에 Windows 7 x64를 사용하고 있습니다. 고마워요!
Șerban Ghiță

14
나는 이것이 높은 순위에 있지 않은 것에 놀랐다. 이것은 가장 빠른 빠른 수정이었다.
hwatkins 2009 년

3
good temp solution ... 다음 사항에주의하십시오. :: RubyGems는 히스토리를 통해 다음 URL을 통해 gem을 제공하도록 구성되었습니다. * gems.rubyforge.org (RubyGems 1.3.6 이하) * rubygems.org (RubyGems 1.3. 7-1.8.25) * rubygems.org (RubyGems 2.0.1 이상)
beauXjames

1
Windows 8에서 가장 빠른 솔루션
Tisch

3
Imho 이것은 외부로부터의 공격에 대한 시스템을 개방하기 때문에 올바른 답변으로 간주되어서는 안됩니다.
rubiii

160

그 이유는 오래된 루비 젬입니다. 비 SSL 소스를 사용하여 시스템 부분을 먼저 업데이트해야합니다.

gem update --system --source http://rubygems.org/ (비 SSL 연결을 사용하여 시스템 부분을 일시적으로 업데이트).

이제 사용할 준비가되었습니다 gem update.


5
크로스 플랫폼이며 RubyGems가 세부 사항을 처리 할 수있는 매우 간단한 솔루션입니다. 좋은.
zrisher '12

2
이것은 받아 들여 져야 할 것이 었습니다. 위의 답변은 당신이 먼저 ssl 소스를 제거해야한다고 설명하지 않습니다
Ephraim

1
감사합니다-이것은 티켓입니다. 소스를 추가하거나 제거 할 때 "캐시에 없음"메시지가 표시되면 슬래시를 사용하거나 사용하지 않고 시도하십시오. 정확히 일치해야합니다.
Timothy Lee Russell

1
많은 솔루션을 검색했습니다. 이것은 매력처럼 일한 것입니다. 감사합니다! 이것이 진정한 솔루션으로 선택되어야합니다.
Berker Yüceer

1
감사합니다!! 나는 이것이 일반 HTTP를 통해 보석을 가져 오지 않기 때문에 이것이 받아 들여지는 대답이어야한다는 것에 동의합니다.
Alexander

117

Mac을 사용하고 있고 최신 버전의 RVM (~ 1.20)을 사용하는 경우 다음 명령이 효과적입니다.

rvm osx-ssl-certs update

감사합니다! Mac OSX 10.8.5에서 나를 위해 일했다
Matthew Blancarte

고마워, 나도 일 했어 CocoaPods를 설치하려고했습니다. rvm 1.22.15, OS X 10.8.5
Logan Moseley

1
이것은 오류 메시지 "... bit.ly/ruby-ssl"을 참조하십시오.
IAmNaN

감사합니다 !! 나를 위해 일했다!! \ o /
Valter Júnior

55

이 문제는 이제 해결되었습니다. rubygems ( gem update --system)를 업데이트하거나 openssl이 OS에서 최신 버전인지 확인하거나 여전히 작동하지 않는 다음 팁을 시도해보십시오. http://railsapps.github.com/openssl-certificate-verify-failed.html


1
번 들러를 업데이트해야 작동합니다 (rubygems 2.0.3 + bundler 1.3.2 + cygwin openssl 1.0.1e가 winxp에서 작동합니다).
fakeleft

1.3.0에서 업데이트해야했는데 이제 1.3.4에 있고 https에서 더 이상 오류가 발생하지 않습니다. bundler-1.3.0 / lib / bundler / vendor / net / http / persistent / ssl_reuse.rb : 70 : `connect '에서 : SSL_connect 리턴 = 1 errno = 0 state = SSLv3 읽기 서버 키 교환 B : 잘못된 ecpoint (OpenSSL :: SSL :: SSLError)
Jon Kern

3
SSL 인증서가 승인되지 않으면 루비 젬을 업데이트 할 수 없습니다! 서클에서 달리기;)
kap

50

임시 솔루션 (Ownatik에서 언급 한 바와 같이) :

행을 포함하여 홈 경로에 .gemrc라는 파일을 작성하거나 수정하십시오. :ssl_verify_mode: 0

이것은 번 들러가 설치를 시도 할 때 SSL 인증서의 gem을 검사하지 못하게합니다.

* nix 디바이스의 경우 '홈 경로'는를 의미 ~/.gemrc합니다. 원하는 /etc/gemrc경우 만들 수도 있습니다 . Windows XP의 경우 '홈 경로'는를 의미 c:\Documents and Settings\All Users\Application Data\gemrc합니다. Windows 7의 경우C:\ProgramData\gemrc


3
%USERPROFILE%\.gemrcgemWindows 에서도 검색됩니다 .
Rômulo Ceccon

1
Windows 8의 권장 파일 위치는?
user1318135

6
SSL 확인을 제거하면 보안 허점을 여는 임시 해결 방법입니다. 자세한 내용은 여기 읽기 : github.com/rubygems/rubygems/commit/...
MRM

이것은 내 경우에 유용합니다. 회사 방화벽 뒤에서 모든 압축 파일을 제한하지만 https를 통해 파일을 허용합니다.
mydoghasworms

이 솔루션을 시도하지는 않았지만이 내용을 다음에 추가했을 때 제 경우에도 효과가 ~/.gemrc:sources: - http://rubygems.org
있었습니다

18

windows7의 경우 여기 에서 cacert.pem 파일을 다운로드하고 environementvariable SSL_CERT_FILE을 인증서를 저장하는 경로로 설정할 수 있습니다.

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

또는 스크립트에서 변수를 다음과 같이 설정할 수 있습니다 ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"

<username>을 자신의 사용자 이름으로 바꾸십시오.


3
감사합니다. 영구 수정이 여기에 있습니다. guides.rubygems.org/ssl-certificate-update
Maheshkumar

이것은 올바른 영구 수정이며 보안되지 않은 http 소스를 사용하지 않습니다.
Dio Phung

15

RVM을 사용하는 경우이 문제에 대한 실제 솔루션 :

  1. 루비 젬 업데이트 : gem update --system
  2. RVM을 사용하여 SSL 인증서를 새로 고치십시오. rvm osx-ssl-certs update all

RailsApps 프로젝트에서이 팁에 대한 모자 팁 !


1
rvm osx-ssl-certs update all나를 위해 잘 작동했습니다. 1 단계를 수행 할 필요가 없습니다.
DMH


7

RVM을 통해 루비를 설치하고 빠른 수정 (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

BTW, 우분투에서 인증서를 건드릴 필요가 없었습니다.

무엇보다도, 이것은 해결 방법이 아닙니다. 보안을 끄는 것보다 훨씬 나은 중간 공격에 사람과 같은 문제가 있으면 SSL을 통해 gem을 다운로드하고 실패합니다.


링크 된 페이지에는 "해결 방법"(첫 번째)과 적절한 해결책이 있습니다. 대답이 조금 더 명확하다고 언급하면 ​​더 좋습니다. 그럼에도 불구하고, (통해 CA 인증서를 사용 cacert.pem하거나하는 것은 $rvm_path/usr/ssl) 참으로 갈 수있는 올바른 방법이다.
Bruno

1
브루노, 그 솔루션은 아마도 그 사람이 사용하는 유닉스의 맛에 따라 약간 다를 것입니다. 링크를 읽는 것이 필요할 것 같습니다.
danielrussia

방금 :ssl_verify_mode: 0이 문제를 해결하는 올바른 방법 인 아래의 3 가지 솔루션 중 하나와 달리 페이지의 "해결 방법"( 문제가 열려 있음) 의 차이점에 대해 이야기 했습니다.
Bruno

@Bruno, 기사를 수정했습니다. 개선 가능성이 있으면 의견을 추가하거나 위키를 편집하십시오.
Daniel Kehoe

6

이것은 수정되었습니다

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

5

.pem 파일에 대한 간단한 복사 붙여 넣기 지침

https://gist.github.com/luislavena/f064211759ee0f806c88

인증서 확인 실패

이전 섹션을 읽었다면 이것이 의미하는 바를 알 수 있습니다 (그렇지 않으면 수치심>).

AddTrustExternalCARoot-2048.pem 을 다운로드해야합니다 . 명령 프롬프트를 열고 다음을 입력하십시오.

C :> gem rubygems C : /Ruby21/lib/ruby/2.1.0/rubygems.rb 이제 해당 디렉토리를 찾으십시오. 동일한 창에서 파일 확장자까지의 경로 부분을 입력하지만 대신 백 슬래시를 사용하십시오.

C :> start C : \ Ruby21 \ lib \ ruby ​​\ 2.1.0 \ rubygems 이렇게하면 표시된 디렉토리 안에 탐색기 창이 열립니다.

3 단계 : 새 신뢰 인증서 복사

이제 ssl_certs 디렉토리를 찾고 이전 단계에서 얻은 .pem 파일을 복사하십시오.

GeoTrustGlobalCA.pem와 같은 다른 파일과 함께 나열됩니다.


4

같은 문제이지만 여기에 다른 보석이 있습니다.

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


7
gemfile에서 ssl이 아닌 rubygems 버전을 임시 해결 방법으로 사용할 수도 있습니다.
fbernier

1
나는 그것을했고 작동합니다. 지금은 충분한 해결책입니다.
mrzasa

나는 여기에 같은 문제가 있습니다. 그래서 @ Ownatik은 ssl 버전의 rubygems를 사용하는 방법?
Zeck

4

가장 간단한 해결책 :

rvm pkg install openssl
rvm reinstall all --force

짜잔!


2
이것이 실제로 내 시스템에 어떤 영향을 미칩니 까?
Bradley Flood


4

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

3

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.

내가 실행할 때 발생 bundle installsource 'https://rubygems.org'Gemfile있다.

이것은 Ubuntu 12.04의 OpenSSL 문제입니다. Rubygems issue # 319를 참조하십시오 .

이 문제를 해결하려면 apt-get update && apt-get upgradeUbuntu 12.04에서 실행하여 OpenSSL을 업그레이드하십시오.


3

나는 rvm다운로드 한 바이너리가 OS X의 OpenSSL에서 잘 작동하지 않는다는 사실을 추적 할 수있었습니다. 오래된 OS는 더 이상 OS에서 사용하지 않습니다.

나를위한 해결책은 다음을 통해 Ruby를 설치할 때 강제로 컴파일하는 것이 었습니다 rvm.

rvm reinstall --disable-binary 2.2

이것은 나를 위해 일했습니다. 사용중인 루비 버전에서 "2.2"를 교체해야합니다.
Josh

3

@ Alexander.Iljushkin을위한 Thx :

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

그 번 들러가 여전히 실패하고 그 해결책은 다음과 같습니다.

gem install bundler


2

비슷한 오류가 발생했습니다. 다음은이 문제를 해결 한 방법입니다. 경로 디렉토리에서 Gemfile을 확인하십시오. gemfile의 소스를 https 대신 http로 편집하여 저장하십시오. SSL 인증서 문제없이 번 들러를 설치할 수 있습니다 .l


2

Windows 컴퓨터의 경우 다음을 사용하여 gem 버전을 확인하십시오.

gem --version

그런 다음 보석을 다음과 같이 업데이트하십시오.

나중에 가리킬 수있는 디렉토리에 파일을 다운로드하십시오 (예 : 하드 드라이브 C :의 루트).

이제 명령 프롬프트를 사용하십시오.

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

이제 SSL 인증서 확인 오류없이 번들 설치가 성공합니다.

더 자세한 설명은 여기



1

openssl을 다시 설치해야했습니다.

brew uninstall --force openssl
brew install openssl

1

최근에이 문제에 직면하여 여기에 설명 된 단계를 수행 했습니다 . 올바른 OpenSSL 인증서를 가리 키지 않았을 수 있습니다. 실행 후 :

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

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

번들 완료!


1

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

1

참고로, 내부 인증 기관이 SSL 인증서를 신뢰하는 소스에서 gem을 가져 오거나 SSL 검사를 통해 회사 웹 프록시를 통해 외부 소스에 연결하는 경우 SSL_CERT_FILE env 변수를 인증서 체인으로 지정하십시오. . 루트 인증서를 인증서 저장소 (macOS의 시스템 키 체인)에서 쉘의 액세스 가능한 위치로 내 보내면됩니다.

export SSL_CERT_FILE=~/RootCert.pem

0

당신이 사용하는 경우 rails-assets

https://rails-assets.org/자산 관리 에 사용했다면 아무런 대답도 도움이되지 않습니다. 로 변환해도 http도움이되지 않습니다.

가장 간단한 수정 방법은이 소스를 대신 사용하는 것 http://insecure.rails-assets.org입니다. 이것은 그들의 홈페이지 에서 언급되었습니다 .


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.