Błąd SSL Podczas instalowania rubygemów, nie można pobrać danych z „https://rubygems.org/


269

Próbuję zrobić samouczek Michaela Hartla. Kiedy próbuję zainstalować szyny 3.2.14 w moim zestawie gem, pojawia się następujący problem:

$ szyny instalacyjne gem -v 3.2.14

BŁĄD: nie można znaleźć prawidłowego „szyny” klejnotu (= 3.2.14), oto dlaczego:

Nie można pobrać danych z https://rubygems.org/ - zwrócono SSL_connect = 1 errno = 0 stan = SSLv3 odczytać certyfikat serwera B: weryfikacja certyfikatu nie powiodła się ( https://s3.amazonaws.com/production.s3.rubygems.org /specs.4.8.gz )

Po Googlingu odkryłem, że mogę użyć źródła innego niż SSL dla rubygemów, więc uruchomiłem:

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

Potem, kiedy próbowałem ponownie zainstalować szyny, udało się. Nadal jednak mam powyższy problem, ale jako ostrzeżenie:

OSTRZEŻENIE: Nie można pobrać danych z „ https://rubygems.org/ ”: Zwrócono SSL_connect = 1 errno = 0 stan = SSLv3 odczytać certyfikat serwera B: weryfikacja certyfikatu nie powiodła się ( https://s3.amazonaws.com/production.s3 .rubygems.org / specs.4.8.gz )

Jak mogę całkowicie usunąć to ostrzeżenie / błąd?

Używam następujących:

  • rvm 1.22.15
  • ruby 2.0.0p247 (2013-06-27 wersja 41674) [x86_64-darwin12.3.0]
  • OSX 10.8.5

Wygląda prawie jak błąd regresji. Zauważyłem, że jeden z moich uczniów ma dzisiaj ten sam problem na OS X. Nadal pracuję nad tym problemem. Istnieją inne powiązane pytania (identyczne?) Dotyczące SO z zeszłego roku.
vgoff

Jest to znany błąd w przestarzałych ( 2.0.*) wersjach rubygems. Spróbuj zaktualizować do najnowszej wersji Rubygems: gem update --systema następnie uruchom ponownie gem install.
Aleksei Matiushkin

Jeśli możesz zaktualizować swoją wersję Ruby, zaktualizuj ją. Ten problem został rozwiązany w nowszej wersji Ruby.
Hong

Po dodaniu źródła http gem sources -r https://rubygems.org/działało dla mnie uruchamianie (w zakresie usuwania ostrzeżenia).
BrainSlugs83

Istnieje zbyt wiele długich odpowiedzi, podczas gdy można to rozwiązać w jednym wierszu w systemie Linux / Mac: stackoverflow.com/a/56993071/5689995
laimison

Odpowiedzi:


382

Dla użytkowników RVM i OSX

Upewnij się, że używasz najnowszego rvm:

rvm get stable

Następnie możesz zrobić dwie rzeczy:

  1. Zaktualizuj certyfikaty:

    rvm osx-ssl-certs update all
  2. Zaktualizuj rubygemy:

    rvm rubygems latest

Dla użytkowników spoza RVM

Znajdź ścieżkę do certyfikatu:

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

Wygeneruj certyfikat:

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

Cały kod: https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/osx-ssl-certs


Dla użytkowników innych niż OSX

Zaktualizuj pakiet ca-certificates. (w starych systemach może nie być dostępny - nie używaj starego systemu, który nie otrzymuje już aktualizacji zabezpieczeń)

Uwaga systemu Windows

Ruby Installer buduje dla okna są przygotowywane przez Luis Lavena i droga do certyfikatów będzie pokazywać coś takiego C:/Users/Luis/...czeku https://github.com/oneclick/rubyinstaller/issues/249 więcej szczegółów i tej odpowiedzi https://stackoverflow.com / a / 27298259/497756 dla poprawki.


Jest inny sposób na aktualizację certyfikatów, jeśli nie używasz RVM?
Eduardo,

Uruchomienie rvm rubygems latestspowodowało błąd narzekań na brak sum kontrolnych. Jednak sprawy też zaczęły działać bez tego ... najwyraźniej mógłbyś to zmusić, --verify-downloads 1gdybyś musiał. Wszelkie pomysły, dlaczego tak może być? Próbowano pobrać wersjęrubygems-2.1.6
Timo,

rvm koduje md5s do pobrania w swoim kodzie, właśnie dodałem je do headwersji i stablewkrótce wypuszczę .
mpapis

2
Uruchamiam to w systemie Windows i uzyskuję ścieżkę, która nawet nie istnieje na moim komputerze "C: /Users/Luis/Code/openknapsack/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0k/ssl /cert.pem "Nie ma też użytkownika o imieniu Luis. Co do cholery?
isimmons

3
Wszelkie sugestie dla użytkowników Mac Mojave? Wpadam napermission denied: /private/etc/ssl/cert.pem
Chandrew

241

Najnowsze ustalenia ...

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

Co najważniejsze ... pobierz https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

Dowiedz się, gdzie go przykleić

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

Następnie po prostu skopiuj plik .pem do ../2.1.0/rubygems/ssl_certs/ i kontynuuj swoją działalność.


8
Pamiętaj, aby zapisać z .pemrozszerzeniem, nie .pem.txt!
Dan Dascalescu

3
Co jeśli to nie zadziała? Zrobiłem tak, jak mówią twoje odpowiedzi, ale wciąż pojawia się błąd! 1) Mam plik AddTrustExternalCARoot-2048.pem, 2) Umieściłem plik C:\Ruby193\lib\ruby\1.9.1\rubygems\ssl_certs, 3) Uruchamiam gem install susyi otrzymuję ten sam błądUnable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Green

spróbuj zaktualizować swoją instalację Ruby ... ta lista nie gwarantuje wstecznej kompatybilności z twoją wersją
beauXjames

1
Kilka notatek o podanym linku do Luisa Laveny. Możesz chcieć zainstalować rubygemy z pliku klejnotów zamiast plików zip, o których wspomina. Nie znalazłem polecenia do zainstalowania z rozpakowanego pliku gem lub zip. Klejnot tutaj - rubygems.org/pages/download . Polecenie to -gem install --local C:\Downloads\rubygems-update-2.4.5.gem
Erran Morad

9
link do pobrania nie jest już ważny. Dla tych z was, którzy wciąż borykają się z tym problemem, skorzystaj z odpowiedzi
Dheerendry

174

Dla użytkowników systemu Windows

Idź do linku http://rubygems.org/pages/download

  1. Pobierz najnowszy plik zip (w moim przypadku 2.4.5)
  2. Rozpakuj to
  3. uruchom „ruby setup.rb” w rozpakowanym folderze
  4. teraz uruchom polecenie gem gem

1
Pracował dla mnie w systemie Windows 8.1, Ruby 2.0.0. Twoje zdrowie.
Yi Zeng,

7
Najlepsze rozwiązanie dla użytkowników systemu Windows
Sorin Haidau

1
Znacznie łatwiejsze niż alternatywy dla systemu Windows wymienione w innych odpowiedziach i działały doskonale na Windows 7 64-bit. Dzięki!
Gurgadurgen,

1
To mi nie działa. Devkit nie jest kompatybilny z najnowszą wersją ruby ​​na Windows 7
roo2

2
Działa dla mnie w systemie Windows 10 i Ruby 2.1.0. Dzięki!
MSC

54

Jeśli chcesz użyć źródła innego niż SSL, spróbuj najpierw usunąć źródło HTTPS, a następnie dodać źródło HTTP:

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

AKTUALIZACJA:

Jak stwierdza mpapis, należy tego używać tylko jako tymczasowego obejścia. Mogą wystąpić pewne obawy dotyczące bezpieczeństwa, jeśli uzyskujesz dostęp do RubyGems za pośrednictwem źródła innego niż SSL.

Gdy obejście nie będzie już potrzebne, należy przywrócić źródło SSL:

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

nie
rezygnuje

1
Zaktualizowałem odpowiedź, aby spróbować wyjaśnić, że jest to tylko obejście problemu z rootem. Właśnie próbował rozwiązać problem Terina, gdy próbował użyć źródła innego niż SSL.
Eduardo,

5
Do twojej wiadomości, musiałem zrobić sudo gem sources -r https://rubygems.org/i sudo gem sources -r http://rubygems.org/. Zwróć uwagę na końcowe /.
Ross Rogers,

Tak, jest to możliwe. Myślę, że zależy to przede wszystkim od sposobu dodania źródła. Chodzi mi o to, że jeśli źródło zostało dodane wraz z końcowym /, to również powinno zostać usunięte wraz z końcowym /.
Eduardo,

Jedyne rozwiązanie, które działało dla mnie, aby pobrać klejnot fu @ ^! #. Dziękuję bardzo!
Genarito

16

W systemie Windows musisz użyć HTTPźródła do aktualizacji, gema następnie powrócić do używania 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/

Edycja: Ostrzeżenie Nie jestem pewien, czy jest to bezpieczne . Czy ktoś wie, czy paczki ruby ​​są podpisane? Przyjęta odpowiedź wygląda na lepsze rozwiązanie.


Dzięki za udostępnienie; tymczasowa zmiana https na http działała, ale musiałem bezpośrednio zmienić plik gem.
Noha Kareem,

2
W moim przypadku potrzebowałem końcowego / z adresem URL https.
Alwyn Schoeman,

1
Jako aktualizację tej odpowiedzi, dobrym pomysłem jest zanim zaczniesz gem sources -lwidzieć źródła przed i po aktualizacji systemu. Jeśli aktualizacja się nie powiedzie, podaj numer wersji zaraz po --systemie. Zobacz rubygems.org/gems/rubygems-update/versions lub zapytaj współpracownika o jakie gem -vraporty.
Gary S. Weaver,

10

Dla użytkowników systemu Windows (i może innych)

Rubygems.org ma przewodnik, który nie tylko wyjaśnia, jak rozwiązać ten problem, ale także dlaczego tak wiele osób go ma: Aktualizacja certyfikatu SSL Przyczyną problemu jest przejście na rubygems.org na bezpieczniejszy certyfikat SSL (SHA-2, który użyj szyfrowania 256-bitowego). Narzędzie wiersza polecenia rubygems łączy odwołanie do poprawnego certyfikatu. Dlatego samych rubygemów nie można zaktualizować przy użyciu starszej wersji rubygemów. Rubygemy należy najpierw zaktualizować ręcznie.

Najpierw dowiedz się, jakie masz rubygemy:

rubygems v

W zależności od tego, czy masz wersję 1.8.x, 2.0.x czy 2.2.x, musisz pobrać klejnot aktualizacji o nazwie „rubygems-update-XYZgem”, gdzie XYZ jest potrzebną wersją. Uruchamianie 1.8.x: pobieranie: https://github.com/rubygems/rubygems/releases/tag/v1.8.30 Uruchamianie 2.0.x: pobieranie: https://github.com/rubygems/rubygems/releases/tag/v2 .0.15 Uruchamianie 2.2.x: pobierz: https://github.com/rubygems/rubygems/releases/tag/v2.2.3

Zainstaluj klejnot aktualizacji:

gem install –-local full_path_to_the_gem_file

Uruchom aktualizację klejnotu:

update_rubygems --no-ri --no-rdoc

Sprawdź, czy rubygemy zostały zaktualizowane:

rubygems v

Odinstaluj klejnot aktualizacji:

gem uninstall rubygems-update -x

W tym momencie możesz być w porządku. Możliwe jednak, że nie masz najnowszego pliku klucza publicznego dla nowego certyfikatu. Aby to zrobić:

Pobierz najnowszy certyfikat (obecnie AddTrustExternalCARoot-2048.pem) ze strony https://rubygems.org/pages/download . Wszystkie certyfikaty znajdują się również na stronie : https://github.com/rubygems/rubygems/tree/master/lib/rubygems/ssl_certs

Dowiedz się, gdzie to umieścić:

gem which rubygems

Umieść ten plik w katalogu „rubygems \ ssl_certs” w tej lokalizacji.

Zgodnie z zatwierdzaniem rubygemów certyfikaty są przenoszone do bardziej szczegółowych katalogów. Dlatego obecnie oczekuje się, że certyfikat (AddTrustExternalCARoot-2048.pem) będzie podążał następującą ścieżkąlib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem



8

Spróbuj użyć strony źródłowej klejnotów, tj. Rubygems.org. Użyj http zamiast https. Ta metoda nie wymaga żadnej pracy, takiej jak instalacja certyfikatów i tym podobne.

Przykład -

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

To działa, ale jest jedno zastrzeżenie.

Klejnot jest zainstalowany, ale dokumentacja nie jest spowodowana błędami certyfikatu. Oto błąd, który otrzymuję

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

Bieganie gem update --systemdziałało dla mnie


6
Działa to również dla mnie w systemie Windows. Musiałem tymczasowo przełączyć się na klasyczny HTTP, następnie zaktualizować, a następnie przełączyć z powrotem na SSL.
Tom Mayfield

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

źródła klejnotów - usuń rubygems.org źródła klejnotów - aktualizacja rubygems.org klejnotów
Stefan Steiger

4

Upewnij się, że zegar systemowy jest poprawny

Ten dokładny błąd przytrafił mi się dzisiaj na maszynie wirtualnej Ubuntu działającej na VirtualBox. Wypróbowałem większość przedstawionych powyżej rozwiązań, zanim zauważyłem, że powróciłem do bardzo starego stanu zawieszenia i mój zegar był wyłączony przez wiele dni.

Aktualizacja zegara natychmiast rozwiązała mój problem. Oto polecenie, którego użyłem w moim przypadku:

usługa sudo ntp stop && sudo ntpdate pool.ntp.org && usługa sudo ntp start


4

Po prostu odinstalowanie i ponowne zainstalowanie openssl z homebrew rozwiązało ten problem.

brew uninstall --force openssl

brew install openssl


1
W przypadku nowszych wersji Homebrew może być konieczne uruchomienie polecenia w następujący sposób: brew uninstall --ignore-dependencies openssl(co jest odpowiednikiem starej forceflagi)
Batkins


3

Jeśli używasz systemu Windows, otwórz https://rubygems.org/ w przeglądarce internetowej.

Kliknij informacje dotyczące bezpieczeństwa i zaimportuj certyfikat. Najważniejsze jest to, że Twój łańcuch certyfikacji jest nieaktualny i musisz dodać ten nowy certyfikat. Pamiętaj, że nie stanowi to naruszenia bezpieczeństwa, o ile możesz zweryfikować certyfikat jako zaufany.


To nic dla mnie nie zrobiło ... Czy OpenSSL używa nawet magazynu certyfikatów Windows?
Julien Ruffin,

2

W moim przypadku certyfikaty Ubuntu CA były nieaktualne. Naprawiłem to, uruchamiając:

 sudo update-ca-certificates

2

Podejście / jeden wiersz, które można zautomatyzować, aby pobierać klejnoty za pomocą HTTP zamiast HTTPS:

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

Działa idealnie, jeśli napotkasz problem w kontenerze dokowanym!
user7364588

1

Szczególnym przypadkiem RubyGems (narzędzie wiersza poleceń) jest to, że wymaga spakowania w swoim kodzie certyfikatów zaufania, które pozwalają RubyGems na ustanowienie połączenia z serwerami, nawet gdy podstawowy system operacyjny nie jest w stanie zweryfikować ich tożsamości.

Jeszcze kilka miesięcy temu ten certyfikat był dostarczany przez jeden urząd certyfikacji, ale nowszy certyfikat jest dostarczany przez inny.

Z tego powodu istniejące instalacje RubyGems musiałyby zostać zaktualizowane przed zmianą certyfikatu i dać wystarczająco dużo czasu na rozpowszechnienie się zmiany (i ludzi na aktualizację)

Każdy może znaleźć swoje rozwiązanie, wykonując proste kroki podane w linku poniżej

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


1

Próbować

gem update --system

Mam nadzieję, że to rozwiązuje problem.


Pracuje dla mnie. Dzięki. Ubuntu; Ruby został zainstalowany przy użyciu 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

Pobierz plik cacert.pem z http://curl.haxx.se/ca/cacert.pem . Zapisz ten plik w C: \ RailsInstaller \ cacert.pem.

Teraz powiadom Ruby o swoim pakiecie urzędu certyfikacji, ustawiając SSL_CERT_FILE. Aby ustawić to w bieżącej sesji wiersza polecenia, wpisz:

ustaw SSL_CERT_FILE = C: \ RailsInstaller \ cacert.pem


0

Miałem ten sam problem podczas próby zainstalowania klejnotu ogórkowego. Zauważyłem jednak, że klejnot bundlera jest już zainstalowany z Ruby 2.0. Utworzyłem Gemfile.rb w folderze projektu z wymaganymi klejnotami i wykonałem te kroki

  1. Przejdź do folderu projektu
  2. Wpisz pakiet instalacji

Zainstalowano wszystkie wymagane klejnoty.


0

W przypadku Illumos / Solaris korzystających z OpenCSW pkgutil:

Zainstaluj certyfikaty CSW przed „instalacją klejnotów”

pkgutil -yi CSWcacertificates

Jeśli używasz zestawu ruby, który nie pochodzi z OpenCSW, Twoja wersja ruby ​​może oczekiwać, że znajdzie plik certyfikatu w innym miejscu. W tym przypadku po prostu dowiązałem symbolicznie plik /etc/opt/csw/ssl/cert.pem OpenCSW do oczekiwanego miejsca.

Sprawdź, gdzie ruby ​​spodziewa się go znaleźć:

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

Następnie, jeśli istnieje rozbieżność, połącz ją:

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


0

Dla użytkownika systemu Windows:

Po pomyślnym zainstalowaniu Ruby 2.2.3 (+ Rubygems 2.5.1) na maszynie testowej z dostępem do Internetu, miałem ten błąd SSL, gdy instalowałem program pakujący na maszynie produkcyjnej w sieci.

Ponieważ miałem ograniczenia dostępu do sieci i nie było sposobu, aby zmienić ustawienia dostępu SSL i na podstawie komunikatów o błędach, wykonałem poniższe kroki, aby móc zakończyć instalację pakietu (może to zabrzmieć szalenie, ale to pracował ...).

Za pośrednictwem komputera z nieograniczonym dostępem do Internetu pobrano następujące pliki:

Dodałem te pliki na serwerze intranetowym, zachowując strukturę folderów odnośników powyżej:

  • $ 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

Następnie dodałem mój intranet, aby uzyskać dostęp do źródła klejnotów:

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

Z sukcesem uruchomiłem „pakiet instalacyjny klejnotów” po instalacji, wystarczyło usunąć mój intranet klejnotu:

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

Mam nadzieję, że przyda się w każdej podobnej sytuacji ....


0

Jako użytkownik systemu Windows 10 śledziłem odpowiedź Dheerendry i pewnego dnia zadziałało to dla mnie. Następnego dnia ponownie doświadczyłem problemu i jego poprawka nie zadziałała. Dla mnie poprawką była aktualizacja bundler:

gem update bundler

Wierzę, że moja wersja bundlermiała więcej niż kilka miesięcy.


0

Upewnij się, że zainstalowałeś Ruby z opcją --disable-binary , jeśli nie, odinstaluj go i zainstaluj ponownie z tą opcją.

więcej informacji tutaj


0

Odpowiedź nie jest już ważna. Ponieważ w tej chwili napotkałem problem ze starszym Windows Ruby, opublikuję odpowiedź.

Kiedy chciałem zainstalować klejnot aktywny:

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)

Poniższe kroki wymagają skopiowania tylko certyfikatów z nowszych okien ruby. Weź najnowszy rubin (lub przynajmniej Ruby 2.4.0 ) i wykonaj następujące czynności:

skopiuj certyfikaty z tych katalogów (dostosuj do swoich potrzeb):
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

do miejsca docelowego (ponownie dostosuj do potrzeb):
C:\prg_sdk\rubies\Ruby231-p112-x64\lib\ruby\2.3.0\rubygems\ssl_certs

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.