SSL 오류 rubygems를 설치할 때 'https://rubygems.org/에서 데이터를 가져올 수 없습니다


269

Michael Hartl 튜토리얼을 수행하려고합니다. gemset에 rails 3.2.14를 설치하려고하면 다음과 같은 문제가 발생합니다.

$ gem 설치 레일 -v 3.2.14

오류 : 유효한 보석 '레일'(= 3.2.14)을 찾을 수 없습니다. 다음과 같은 이유가 있습니다.

https://rubygems.org/ 에서 데이터를 다운로드 할 수 없음 -SSL_connect 리턴 = 1 errno = 0 state = SSLv3 서버 인증서 B 읽기 : 인증서 확인 실패 ( https://s3.amazonaws.com/production.s3.rubygems.org /specs.4.8.gz )

인터넷 검색 후 루비 젬에 SSL이 아닌 소스를 사용할 수 있다는 것을 알았습니다.

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

그런 다음 레일을 다시 설치하려고 시도했지만 성공했습니다. 그러나 여전히 위의 문제가 있지만 경고로 나타납니다.

경고 : ' https://rubygems.org/ 에서 데이터를 가져올 수 없습니다 ' : SSL_connect 리턴 = 1 errno = 0 state = SSLv3 서버 인증서 읽기 B : 인증서 확인 실패 ( https://s3.amazonaws.com/production.s3 .rubygems.org / specs.4.8.gz )

이 경고 / 오류를 완전히 제거하려면 어떻게해야합니까?

나는 다음을 사용하고 있습니다 :

  • rvm 1.22.15
  • 루비 2.0.0p247 (2013-06-27 개정 41674) [x86_64-darwin12.3.0]
  • OSX 10.8.5

거의 회귀 오류처럼 보입니다. 오늘 OS X에서 동일한 문제를 겪고있는 학생들 중 한 명을 발견했습니다. 여전히 문제를 해결하고 있습니다. 작년부터 SO에 관한 다른 관련 질문 (동일?)이 있습니다.
vgoff

구식 ( 2.0.*) 버전의 알려진 버그 입니다 rubygems. 최신 rubygems 버전으로 업데이트 gem update --system한 다음 다시 실행하십시오 gem install.
Aleksei Matiushkin

루비 버전을 업데이트해도 괜찮다면 업데이트하십시오. 이 문제는 최신 루비 버전에서 해결되었습니다.
Hong

http 소스를 추가 한 후 gem sources -r https://rubygems.org/(경고를 제거하는 한) 실행 했습니다.
BrainSlugs83 1

긴 답변이 너무 많지만 Linux / Mac에서는 한 줄로 정렬 할 수 있습니다. stackoverflow.com/a/56993071/5689995
laimison

답변:


382

RVM 및 OSX 사용자

최신 rvm을 사용해야합니다.

rvm get stable

그런 다음 두 가지 작업을 수행 할 수 있습니다.

  1. 인증서 업데이트 :

    rvm osx-ssl-certs update all
  2. 루비 젬 업데이트 :

    rvm rubygems latest

RVM이 아닌 사용자의 경우

인증서 경로 찾기 :

cert_file=$(ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE')

인증서 생성 :

security find-certificate -a -p /Library/Keychains/System.keychain > "$cert_file"
security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> "$cert_file"

전체 코드 : https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/osx-ssl-certs


OSX 이외의 사용자

package를 업데이트하십시오 ca-certificates. (이전 시스템에서는 사용하지 못할 수 있습니다. 더 이상 보안 업데이트를받지 않는 이전 시스템을 사용하지 마십시오)

윈도우 노트

루비 설치 프로그램이 창에 의해 준비를위한 빌드 루이스 Lavena 및 인증서의 경로 같은 것을 보여주는 것입니다 C:/Users/Luis/...체크 https://github.com/oneclick/rubyinstaller/issues/249 자세한 내용은이 대답을 https://stackoverflow.com 수정 하려면 / a / 27298259 / 497756


RVM을 사용하지 않는 경우 인증서를 업데이트하는 다른 방법이 있습니까?
Eduardo

러닝 rvm rubygems latest없는 체크섬에 대해 불평 오류가 발생했습니다. 그러나 일도 그 일없이 시작되었습니다 ... --verify-downloads 1필요하다면 강제로 할 수 있습니다. 왜 그런 아이디어가 있습니까? 그것은 버전을 검색하려고 시도rubygems-2.1.6
Timo

rvm은 코드에서 다운로드를 위해 md5를 하드 코딩합니다. 방금 head버전에 추가하여 stable곧 릴리스 할 예정입니다.
mpapis

2
나는 그것을 Windows에서 실행하고 내 컴퓨터에도 존재하지 않는 경로를 얻습니다 "C : /Users/Luis/Code/openknapsack/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0k/ssl /cert.pem "Luis라는 사용자가 없습니다. 도대체?
isimmons

3
Mac Mojave 사용자를위한 제안 사항이 있습니까? 실행permission denied: /private/etc/ssl/cert.pem
Chandrew

241

최신 결과 ...

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

가장 중요한 것은 ... 다운로드 https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

어디에 붙일 지 알아 내십시오

C:\>gem which rubygems
C:/Ruby21/lib/ruby/2.1.0/rubygems.rb

그런 다음 .pem 파일을 ../2.1.0/rubygems/ssl_certs/에 복사하고 비즈니스를 계속하십시오.


8
.pem확장명이 아닌 저장하십시오 .pem.txt!
Dan Dascalescu

3
작동하지 않으면 어떻게합니까? 나는 당신의 대답이 말한대로했지만 여전히 오류가 발생합니다! 1) 파일이 있습니다 AddTrustExternalCARoot-2048.pem. 2) 파일을 다음에 배치했습니다 C:\Ruby193\lib\ruby\1.9.1\rubygems\ssl_certs. 3) 실행 gem install susy하고 같은 오류가 발생합니다Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
녹색

Ruby 설치를 업데이트 해보십시오 ...이 요지는 버전과의 호환성을 보장하지 않습니다
beauXjames

1
당신이 준 luis lavena 링크에 대한 몇 가지 메모. 그가 언급 한 zip 파일 대신 gem 파일에서 rubygems를 설치할 수 있습니다. 압축이 풀린 gem 또는 zip 파일에서 설치할 명령을 찾지 못했습니다. 여기에 보석 - rubygems.org/pages/download . 이 명령은 -gem install --local C:\Downloads\rubygems-update-2.4.5.gem
Erran Morad

9
다운로드 링크가 더 이상 유효하지 않습니다. 여전히이 문제에 직면 한 사람들은 Dheerendra의 해결책을 참조하십시오.
Llama.new

174

Windows 사용자의 경우

이동 링크 http://rubygems.org/pages/download

  1. 최신 zip 파일 다운로드 (필자의 경우 2.4.5)
  2. 압축 해제
  3. 압축이 풀린 폴더에서 "ruby setup.rb"실행
  4. 이제 gem install 명령을 실행하십시오.

1
Windows 8.1, Ruby 2.0.0에서 나를 위해 일했습니다. 건배.
Yi Zeng

7
Windows 사용자를위한 최상의 솔루션
Sorin Haidau

1
다른 답변에 나열된 Windows의 대안보다 훨씬 쉽고 Windows 7 64 비트에서 완벽하게 작동했습니다. 감사!
Gurgadurgen

1
이것은 나를 위해 작동하지 않습니다. Devkit은 Windows 7에서 최신 버전의 루비와 호환되지 않습니다
roo2

2
Windows 10 및 Ruby 2.1.0에서 작동합니다. 감사!
MSC

54

비 SSL 소스를 사용하려면 먼저 HTTPS 소스를 제거한 다음 HTTP 소스를 추가하십시오.

sudo gem sources -r https://rubygems.org
sudo gem sources -a http://rubygems.org  

최신 정보:

mpapis가 말했듯이 이것은 임시 해결 방법으로 만 사용해야합니다. 비 SSL 소스를 통해 RubyGem에 액세스하는 경우 일부 보안 문제가있을 수 있습니다.

해결 방법이 더 이상 필요하지 않으면 SSL 소스를 복원해야합니다.

sudo gem sources -r http://rubygems.org
sudo gem sources -a https://rubygems.org

이 즉각적인 문제에
단독

1
이것이 루트 문제의 해결 방법이라는 것을 분명히하기 위해 답변을 업데이트했습니다. 비 SSL 소스를 사용하려고 할 때 Terin의 문제를 해결하려고했습니다.
Eduardo

5
참고로해야 할 sudo gem sources -r https://rubygems.org/일과 sudo gem sources -r http://rubygems.org/. 후행에 주목하십시오 /.
로스 로저스

네 가능합니다. 소스가 처음 추가 된 방식에 달려 있다고 생각합니다. 소스에 후행을 추가 한 경우 후행 /으로도 제거해야합니다 /.
Eduardo Eduardo

fu @ ^! # gem을 다운로드 할 수있는 유일한 솔루션입니다. 정말 고맙습니다!
Genarito

16

Windows에서는 HTTP소스를 사용 하여 업데이트 gem한 다음을 사용하여 다시 변경해야합니다 HTTPS.

gem sources -r https://rubygems.org/
gem sources -a http://rubygems.org/
gem update --system
gem sources -r http://rubygems.org/
gem sources -a https://rubygems.org/

편집 : 경고 이것이 안전한지 확실하지 않습니다 . 루비 패키지가 서명되었는지 아는 사람이 있습니까? 허용되는 답변은 더 나은 솔루션처럼 보입니다.


공유해 주셔서 감사합니다. 일시적으로 https를 http로 변경하면 효과가 있었지만 gemfile을 직접 변경해야했습니다.
노하 카림

2
내 경우에는 https URL로 후행 /이 필요했습니다.
Alwyn Schoeman 17

1
이 답변에 대한 업데이트로서 gem sources -l시스템 업데이트 전후에 소스를보기 시작하기 전에 좋은 아이디어 입니다. 업데이트가 실패하면 --system 바로 뒤에 버전 번호를 지정하십시오. rubygems.org/gems/rubygems-update/versions를 참조 하거나 동료에게 어떤 gem -v보고서 를 요청 하십시오 .
게리 S. 위버

10

Windows 사용자 및 기타 사용자

Rubygems.org에는이 문제를 해결하는 방법뿐만 아니라 왜 많은 사람들이 그 문제를 겪고 있는지 설명하는 안내서가 있습니다. SSL 인증서 업데이트 문제의 원인은 rubygems.org가보다 안전한 SSL 인증서 (SHA-2 256 비트 암호화 사용). rubygems 명령 행 도구는 올바른 인증서에 대한 참조를 번들로 제공합니다. 따라서 루비 젬 자체는 이전 버전의 루비 젬을 사용하여 업데이트 할 수 없습니다. Rubygems는 먼저 수동으로 업데이트해야합니다.

먼저 당신이 가지고있는 루비 젬을 찾으십시오 :

rubygems v

1.8.x, 2.0.x 또는 2.2.x가 있는지에 따라“rubygems-update-XYZgem”이라는 업데이트 젬을 다운로드해야합니다. 여기서 XYZ는 필요한 버전입니다. 1.8.x 실행 : 다운로드 : https://github.com/rubygems/rubygems/releases/tag/v1.8.30 2.0.x 실행 : 다운로드 : https://github.com/rubygems/rubygems/releases/tag/v2 .0.15 2.2.x 실행 중 : 다운로드 : https://github.com/rubygems/rubygems/releases/tag/v2.2.3

업데이트 젬 설치 :

gem install –-local full_path_to_the_gem_file

업데이트 젬을 실행합니다 :

update_rubygems --no-ri --no-rdoc

rubygems가 업데이트되었는지 확인하십시오 :

rubygems v

업데이트 젬 제거 :

gem uninstall rubygems-update -x

이 시점에서 괜찮을 수 있습니다. 그러나 새 인증서에 대한 최신 공개 키 파일이 없을 수 있습니다. 이것을하기 위해:

https://rubygems.org/pages/download 에서 최신 인증서 (현재 AddTrustExternalCARoot-2048.pem)를 다운로드 하십시오. . 모든 인증서는 https://github.com/rubygems/rubygems/tree/master/lib/rubygems/ssl_certs 에도 있습니다.

어디에 넣을지 알아보십시오.

gem which rubygems

이 파일을이 위치의 "rubygems \ ssl_certs"디렉토리에 두십시오.

당으로 젬 커밋 , 인증서는보다 구체적인 디렉토리로 이동합니다. 따라서 현재 인증서 (AddTrustExternalCARoot-2048.pem)는 다음 경로에 있어야합니다.lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem



8

젬에 대한 소스 웹 사이트 (예 : rubygems.org)를 사용하십시오. https 대신 http를 사용하십시오. 이 방법에는 인증서 설치와 같은 작업이 필요하지 않습니다.

예 -

gem install typhoeus --source http://rubygems.org

이것은 효과가 있지만 한 가지주의 사항이 있습니다.

gem이 설치되었지만 설명서는 인증서 오류로 인한 것이 아닙니다. 내가 얻는 오류는 다음과 같습니다.

Parsing documentation for typhoeus-0.7.0 WARNING: Unable to pull 
data from 'https://rubygems.org/': SSL_connect returned=1 errno=0 
state=SSLv3 read server certificate B: certificate verify failed 
(https://rubygems.org/latest_specs.4.8.gz)

7

러닝 gem update --system은 나를 위해 일했다


6
이것은 Windows에서도 효과적이었습니다. 일시적으로 클래식 HTTP로 전환 한 다음 업데이트 한 다음 SSL로 다시 전환해야했습니다.
Tom Mayfield

1
오류. SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
Green

보석 소스는 --remove rubygems.org 보석 소스 -a rubygems.org 보석 업데이트 --system
스테판 스타 이거

4

시스템 시계가 올바른지 확인하십시오

이 정확한 오류는 오늘 VirtualBox에서 실행되는 Ubuntu 가상 머신에서 발생했습니다. 매우 오래된 일시 중단 상태에서 다시 시작한 것을 알기 전에 위에 표시된 대부분의 솔루션을 사용해 보았으며 시계가 여러 날 꺼져있었습니다.

시계를 업데이트하면 즉시 문제가 해결되었습니다. 필자의 경우에 사용한 명령은 다음과 같습니다.

sudo 서비스 ntp 중지 및 & sudo ntpdate pool.ntp.org && sudo 서비스 ntp 시작


4

homebrew로 openssl을 제거하고 재설치하면이 문제가 해결되었습니다.

brew uninstall --force openssl

brew install openssl


1
최신 버전의 homebrew를 사용하면 다음과 같이 명령을 실행해야 할 수 있습니다. brew uninstall --ignore-dependencies openssl(이전 force플래그 와 동일 함 )
Batkins


3

윈도우를 사용하는 경우 인터넷 탐색기로 https://rubygems.org/ 를 엽니 다 .

보안 정보를 클릭하고 인증서를 가져 오십시오. 결론은 인증 체인이 오래되어 새 인증서를 추가해야한다는 것입니다. 인증서를 신뢰할 수있는 것으로 확인할 수있는 한 이것은 보안 위반이 아닙니다.


그것은 나를 위해 아무것도하지 않았다 ... OpenSSL은 심지어 Windows 인증서 저장소를 사용합니까?
Julien Ruffin

2

필자의 경우 Ubuntu CA 인증서가 오래되었습니다. 나는 그것을 실행하여 고쳤다.

 sudo update-ca-certificates

2

HTTPS 대신 HTTP를 사용하여 gem을 다운로드하도록 자동화 할 수있는 접근 방식 / 한 줄짜리 :

printf -- '---\n:sources:\n- http://rubygems.org\n' | tee ~/.gemrc

도커 컨테이너에 문제가 발생하면 완벽하게 작동합니다!
user7364588

1

RubyGems (명령 줄 도구)의 특정 사례는 코드 내부에 신뢰 인증서를 번들로 묶어야하므로 기본 운영 체제에서 ID를 확인할 수없는 경우에도 RubyGem이 서버와 연결을 설정할 수 있습니다.

몇 개월 전까지이 인증서는 하나의 CA에서 제공되었지만 최신 인증서는 다른 인증서에서 제공되었습니다.

이 때문에 인증서를 전환하기 전에 기존의 RubyGems 설치를 업데이트하고 변경 사항이 확산 될 수있는 충분한 시간을 제공해야합니다 (사람들이 업데이트 할 수 있음)

누구나 아래 링크에 제공된 간단한 단계를 수행하여 자신의 솔루션을 찾을 수 있습니다

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


1

시험

gem update --system

그것이 문제를 해결하기를 바랍니다.


나를 위해 작동합니다. 감사. 우분투; Ruby는를 사용하여 설치되었습니다 apt install ruby.
Marslo

ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
Jonathan

1

http://curl.haxx.se/ca/cacert.pem 에서 cacert.pem 파일을 다운로드 하십시오 . 이 파일을 C : \ RailsInstaller \ cacert.pem에 저장하십시오.

SSL_CERT_FILE을 설정하여 루비가 인증 기관 번들을 인식하도록합니다. 현재 명령 프롬프트 세션에서이를 설정하려면 다음을 입력하십시오.

SSL_CERT_FILE = C : \ RailsInstaller \ cacert.pem 설정


0

오이 보석을 설치하는 동안 같은 문제가 발생했습니다. 그러나 번 들러 gem은 이미 ruby ​​2.0과 함께 설치되어 있음을 알았습니다. 필요한 gem이있는 프로젝트 폴더에 Gemfile.rb를 생성하고이 단계를 수행했습니다.

  1. 프로젝트 폴더로 이동
  2. 타입 번들 설치

필요한 모든 보석이 설치되었습니다.


0

OpenCSW pkgutil을 사용하는 Illumos / Solaris의 경우 :

'gem install'전에 CSWca 인증서를 설치하십시오.

pkgutil -yi CSWcacertificates

OpenCSW가 아닌 루비 키트를 사용하는 경우 루비 버전이 다른 위치에서 인증서 파일을 찾을 수 있습니다. 이 경우 OpenCSW의 /etc/opt/csw/ssl/cert.pem을 원하는 위치에 심볼릭 링크했습니다.

루비가 찾을 위치를 확인하십시오.

export cf=`ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'` && echo $cf

그런 다음 불일치가 있으면 연결하십시오.

ln -s /etc/opt/csw/ssl/cert.pem $cf && file $cf


0

Windows 사용자의 경우 :

인터넷에 액세스 할 수있는 테스트 시스템에 Ruby 2.2.3 (+ rubygems 2.5.1)을 성공적으로 설치 한 후 네트워크 내의 프로덕션 시스템에 번 들러를 설치할 때이 SSL 오류가 발생했습니다.

네트워크 액세스 제한이 있었고 SSL 액세스 설정을 변경하는 방법이 없었고 오류 메시지를 기반으로 아래 단계를 수행하여 번 들러 설치를 완료 할 수있었습니다. 일했다 ...).

인터넷에 무제한으로 액세스 할 수있는 컴퓨터를 통해 다음 파일을 다운로드하십시오.

위 링크의 폴더 구조를 유지하면서 인트라넷 서버에 이러한 파일을 추가했습니다.

  • $ INTRANET_HOME

spec.4.8.gz e latest_specs.4.8.gz

  • $ INTRANET_HOME \ quick \ Marshal.4.8

bundler-1.11.2.gemspec.rz

  • $ INTRANET_HOME \ gems

bundler-1.11.2.gem

그런 다음 gem 소스에 액세스하기 위해 인트라넷을 추가했습니다.

gem sources -a http://mydomain.com.br

설치 후 "gem install bundler"를 성공적으로 실행했습니다. gem의 인트라넷을 제거하기 만하면됩니다.

gem sources -r http://mydomain.com.br

나는 그것이 비슷한 상황에서 유용하기를 바랍니다 ....


0

Windows 10 사용자로서 Dheerendra의 답변을 따랐으며 어느 날 나를 위해 일했습니다. 다음날 문제가 다시 발생하여 문제가 해결되지 않았습니다. 나를 위해 수정 사항은 bundler다음과 같이 업데이트 되었습니다.

gem update bundler

내 버전이 bundler몇 달 이상 났다고 생각 합니다.


0

--disable-binary 옵션 을 사용 하여 ruby를 설치했는지 확인하십시오 . 그렇지 않은 경우 제거하고 옵션으로 다시 설치하십시오.

더 많은 정보는 여기에


0

답변이 더 이상 유효하지 않습니다. 이전 Windows 에서 문제가 발생했기 때문에 루비 지금 답변을 게시 할 것입니다.

activesupport gem을 설치하고 싶을 때 :

gem in activesupport --version 5.1.6

ERROR:  Could not find a valid gem 'activesupport' (= 5.1.6), here is why:
          Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B
: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)

다음 단계는 최신 Windows ruby의 인증서 만 복사해야합니다. 최신 루비 (또는 최소한 루비 2.4.0 사용) )를 다음을 수행하십시오.

이 디렉토리에서 인증서를 복사하십시오 (필요에 따라 조정).
C:\prg_sdk\rubies\Ruby-2.4\lib\ruby\2.4.0\rubygems\ssl_certs\rubygems.org
C:\prg_sdk\rubies\Ruby-2.4\lib\ruby\2.4.0\rubygems\ssl_certs\index.rubygems.org

목적지로 (다시 필요한 것에 맞추십시오) :
C:\prg_sdk\rubies\Ruby231-p112-x64\lib\ruby\2.3.0\rubygems\ssl_certs

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