programing

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

starjava 2023. 6. 6. 00:22
반응형

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

마이클 하틀 튜토리얼을 하려고 합니다.내 보석 세트에 레일 3.2.14를 설치하려고 하면 다음과 같은 문제가 발생합니다.

보석 설치 레일 - v 3.2.14

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

https://rubygems.org/ 에서 데이터를 다운로드할 수 없음 - SSL_connect에서 =1 errno=0 상태가 반환됨=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 상태=SSLv3 읽기 서버 인증서 B: 인증서 확인 실패(https://s3.amazonaws.com/production.s3.rubygems.org/specs.4.8.gz)

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

다음을 사용합니다.

  • rvm 1.22.15
  • ruby 2.0.0p247 (2013-06-27 개정판 41674) [x86_64-160012.3.0]
  • OSX 10.8.5

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 사용자가 아닌 사용자의 경우

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

윈도우 노트

Windows용 Ruby Installer 빌드Luis Lavena에 의해 준비되었으며 인증서 경로는 다음과 같이 표시됩니다.C:/Users/Luis/...자세한 내용은 https://github.com/oneclick/rubyinstaller/issues/249 을 확인하고 수정사항은 https://stackoverflow.com/a/27298259/497756 을 참조하십시오.

최근 결과...

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/에 복사하여 비즈니스를 계속 진행합니다.

Windows 사용자의 경우

http://rubygems.org/pages/download 링크로 이동합니다.

  1. 최신 zip 파일 다운로드(내 경우 2.4.5)
  2. 압축 풀기
  3. 압축 해제된 폴더에서 "dll setup.dll"을 실행합니다.
  4. 이제 gem install 명령을 실행합니다.

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

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

업데이트:

mpapis에 명시된 것처럼 이것은 임시 해결책으로만 사용해야 합니다.비SSL 소스를 통해 RubyGems에 액세스하는 경우 몇 가지 보안 문제가 발생할 수 있습니다.

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

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

에서는 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/

편집: 경고 이것이 안전한지 잘 모르겠습니다.루비 패키지에 서명이 되어 있는지 아는 사람 있나요?승인된 답변은 더 나은 해결책처럼 보입니다.

Windows 사용자(및 기타 사용자)용

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

먼저 어떤 루비젬을 가지고 있는지 확인합니다.

rubygems –v

1.8.x, 2.0.x 또는 2.2.x 중 어느 것을 사용하는지에 따라 "rubygems-update-X.Y.Z.gem"이라는 이름의 업데이트 보석을 다운로드해야 합니다. 여기서 X.필요한 버전은 Y.Z입니다.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 –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

보석에 대한 소스 웹 사이트, 즉 rubygems.org 를 사용해 보십시오.https 대신 http를 사용합니다.이 방법은 인증서 설치 등의 작업을 포함하지 않습니다.

예 -

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

이것은 효과가 있지만, 한 가지 경고가 있습니다.

보석이 설치되었지만 설명서가 특정 오류 때문이 아닙니다.여기 내가 받는 오류가 있습니다.

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)

중입니다.gem update --system나를 위해 일했습니다.

시스템 시계가 올바른지 확인합니다.

VirtualBox에서 실행되는 Ubuntu 가상 시스템에서 오늘 이 정확한 오류가 발생했습니다.저는 매우 오래된 일시 중단 상태에서 다시 시작하여 시계가 며칠씩 꺼져 있다는 것을 알아차리기 전에 위에 표시된 대부분의 솔루션을 시도했습니다.

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

sudo service ntp stop & sudo ntpdate pool.ntp.org & sudo service ntp start

홈브루와 함께 openssl을 제거하고 다시 설치하는 것만으로 이 문제가 해결되었습니다.

brew uninstall --force openssl

brew install openssl

Fedora 사용자용

cert.pemcURL에서 제공하는 최신 파일로: http://curl.haxx.se/ca/cacert.pem

curl -o `ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE' |tr -d \"` http://curl.haxx.se/ca/cacert.pem

Windows를 사용하는 경우 Internet Explorer를 사용하여 https://rubygems.org/ 을 엽니다.

보안 정보를 클릭하고 인증서를 가져옵니다.중요한 것은 인증 체인이 오래되었기 때문에 이 새 인증서를 추가해야 한다는 것입니다.인증서를 신뢰할 수 있는 것으로 검증할 수 있는 한 이는 보안 위반이 아닙니다.

HTTPS 대신 HTTP를 사용하여 보석을 다운로드하도록 자동화할 수 있는 접근 방식/원라이너:

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

제 경우 Ubuntu CA 인증서가 오래되었습니다.실행하여 수정했습니다.

 sudo update-ca-certificates

http://curl.haxx.se/ca/cacert.pem 에서 cacert.pem 파일을 다운로드합니다.이 파일을 C:\Rails에 저장합니다.설치 프로그램\cacert.pem.

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

SSL_CERT_FILE=C:\RailsInstaller\cacert.

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

몇 달 전까지만 해도 이 인증서는 한 CA에서 제공했지만 새로운 인증서는 다른 CA에서 제공합니다.

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

누구나 아래 링크에 나와 있는 간단한 단계를 따라 솔루션을 찾을 수 있습니다.

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

해라

gem update --system

문제가 해결되길 바랍니다.

Windows의 경우 https://gist.github.com/fnichol/867550 을 팔로우했습니다."cacert.pem" 파일을 수동으로 다운로드해야 했습니다.(https://curl.se/docs/caextract.html.) 을 참조하십시오.삭제되거나 함께 삭제되지 않는 폴더에 저장합니다.

시스템 환경 변수에 추가해야 합니다!!!

"환경 변수 변경" 옵션이 있는 제어판(사용자 계정 선택)을 통해 이 작업을 수행했습니다(Windows 10).새 변수를 만들고 값을 경로 및 파일 이름으로 설정합니다!

var name    SSL_CERT_FILE

var value   C:\{your_dir}\cacert.pem

이렇게 하면 필요할 때마다(즉, 열려 있는 모든 명령 창) 볼 수 있고 사용 가능한 상태로 유지됩니다!

저는 오이 보석을 설치하려다가 같은 문제를 겪었습니다.하지만 저는 번들러 보석이 루비 2.0으로 이미 설치되어 있다는 것을 알게 되었습니다.프로젝트 폴더에 필요한 보석으로 Gemfile.rb를 생성하고 이 단계를 수행했습니다.

  1. 프로젝트 폴더로 이동
  2. 번들 설치 유형

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

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

'gem 설치' 전에 CSWc 인증서 설치

pkgutil -yi CSWcacertificates

OpenCSW가 아닌 Ruby 키트를 사용하는 경우 Ruby 버전이 다른 위치에서 인증서 파일을 찾을 수 있습니다.이 경우 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

아니면 저처럼 방화벽으로 막을 수도 있습니다.사용해 보십시오.

sudogem 설치 --http-proxy http://localhost:port cocoapods -V

Windows 사용자의 경우:

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

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

인터넷에 제한 없이 액세스할 수 있는 컴퓨터를 통해 다음 파일을 다운로드했습니다.

  • 사양 4.8.gz(http://rubygems.global.ssl.fastly.net/spec.4.8.gz)
  • latest_module.4.8.gz(http://rubygems.global.ssl.fastly.net/latest_specs.4.8.gz)
  • bundler-1.11.2.bunderpec.rz(http://rubygems.global.ssl.fastly.net/quick/Marshal.4.8/bundler-1.11.2.gemspec.rz)
  • bundler-1.11.2.bunder(http://rubygems.global.ssl.fastly.net/gems/bundler-1.11.2.gem)

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

  • $INTranet_HOME

사양.4.8.gze latest_novel.4.8.gz

  • $INTranet_HOME\quick\Marshal.4.8

번들러-1.11.2.bunderpec.rz

  • $INTranet_HOME\gems

번들러-1.11.2.1987

그런 다음 인트라넷을 추가하여 Gem 소스에 액세스했습니다.

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

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

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

저는 그것이 유사한 상황에서 유용하기를 바랍니다.

윈도우 10 사용자로서, 저는 Dheerendra의 대답을 따랐고, 그것은 언젠가 저에게 효과가 있었습니다.다음 날, 저는 그 문제를 다시 경험했고, 그의 해결책은 작동하지 않았습니다.나에게, 수정 사항은 업데이트하는 것이었습니다.bundler매개 변수:

gem update bundler

는 제 의 는나내버이를 .bundler몇 달이 넘었습니다.

--disable-binary 옵션을 사용하여 루비를 설치했는지 확인하고 설치하지 않은 경우 제거한 후 옵션을 사용하여 다시 설치합니다.

여기에 더 많은 정보

답변이 더 이상 유효하지 않습니다.이전 Windows Ruby에서 문제가 발생했기 때문입니다.제가 답을 올리겠습니다.

활성 지원 보석을 설치하고자 할 때:

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의 인증서만 복사하면 됩니다.최신 Ruby(또는 적어도 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

루비젬에 가서 최신 버전의 작품을 다운받습니다.창문을 사용하고 있습니다.

언급URL : https://stackoverflow.com/questions/19150017/ssl-error-when-installing-rubygems-unable-to-pull-data-from-https-rubygems-o

반응형