Erreur SSL lors de l'installation de rubygems, impossible d'extraire les données de 'https://rubygems.org/


269

J'essaie de faire le tutoriel de Michael Hartl. Lorsque j'essaie d'installer des rails 3.2.14 dans mon jeu de gemmes, j'obtiens le problème suivant:

$ gem install rails -v 3.2.14

ERREUR: Impossible de trouver une gemme 'rails' valide (= 3.2.14), voici pourquoi:

Impossible de télécharger les données depuis https://rubygems.org/ - SSL_connect retourné = 1 errno = 0 état = SSLv3 lire le certificat du serveur B: la vérification du certificat a échoué ( https://s3.amazonaws.com/production.s3.rubygems.org /specs.4.8.gz )

Après avoir parcouru Google, j'ai découvert que je pouvais utiliser une source non SSL pour rubygems, j'ai donc exécuté:

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

Puis, quand j'ai essayé de réinstaller les rails, cela a réussi. Cependant, j'ai toujours eu le problème ci-dessus mais comme avertissement:

AVERTISSEMENT: impossible d'extraire des données de ' https://rubygems.org/ ': SSL_connect retourné = 1 errno = 0 état = SSLv3 lecture du certificat du serveur B: la vérification du certificat a échoué ( https://s3.amazonaws.com/production.s3 .rubygems.org / specs.4.8.gz )

Comment puis-je supprimer complètement cet avertissement / erreur?

J'utilise les éléments suivants:

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

Cela ressemble presque à une erreur de régression. J'ai remarqué qu'un de mes étudiants a le même problème aujourd'hui sur OS X. Toujours en train de résoudre le problème. Il y a d'autres questions connexes (identiques?) Sur le SO de l'année dernière.
vgoff

Il s'agit d'un bogue connu dans les 2.0.*versions obsolètes ( ) de rubygems. Essayez de mettre à jour vers la dernière version de rubygems: gem update --systempuis relancez gem install.
Aleksei Matiushkin

Si vous pouvez mettre à jour votre version ruby, mettez-la à jour. Ce problème est résolu dans la nouvelle version rubis.
Hong

Après avoir ajouté la source http, l'exécution a gem sources -r https://rubygems.org/fonctionné pour moi (en ce qui concerne la suppression de l'avertissement).
BrainSlugs83

Il y a trop de réponses longues alors
qu'elles

Réponses:


382

Pour les utilisateurs RVM et OSX

Assurez-vous que vous utilisez le dernier rvm:

rvm get stable

Ensuite, vous pouvez faire deux choses:

  1. Mettre à jour les certificats:

    rvm osx-ssl-certs update all
  2. Mettre à jour les rubygèmes:

    rvm rubygems latest

Pour les utilisateurs non RVM

Rechercher le chemin du certificat:

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

Générer un certificat:

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

Le code entier: https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/osx-ssl-certs


Pour les utilisateurs non OSX

Assurez-vous de mettre à jour le package ca-certificates. (sur les anciens systèmes, il pourrait ne pas être disponible - n'utilisez pas un ancien système qui ne reçoit plus de mises à jour de sécurité)

Remarque sur Windows

Les versions de Ruby Installer pour Windows sont préparées par Luis Lavena et le chemin vers les certificats affichera quelque chose comme C:/Users/Luis/...check https://github.com/oneclick/rubyinstaller/issues/249 pour plus de détails et cette réponse https://stackoverflow.com / a / 27298259/497756 pour correction.


Il existe un autre moyen de mettre à jour les certificats si vous n'utilisez pas RVM?
Eduardo

L'exécution a rvm rubygems latestentraîné une erreur se plaignant des sommes de contrôle manquantes. Cependant, les choses ont commencé à fonctionner sans cela aussi ... apparemment, vous pourriez le forcer avec --verify-downloads 1si vous en aviez besoin. Des idées pourquoi cela pourrait être? Il a essayé de récupérer la versionrubygems-2.1.6
Timo

rvm code en dur les md5 pour les téléchargements dans son code, je les ai juste ajoutés à la headversion et sortirai stablebientôt.
mpapis

2
Je l'exécute sur Windows et j'obtiens un chemin qui n'existe même pas sur mon ordinateur "C: /Users/Luis/Code/openknapsack/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0k/ssl /cert.pem "Il n'y a pas non plus d'utilisateur nommé Luis. Que se passe-t-il?
isimmons

3
Des suggestions pour les utilisateurs de Mac Mojave? Courir enpermission denied: /private/etc/ssl/cert.pem
Chandrew

241

Dernières découvertes ...

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

Plus important encore ... téléchargez https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

Découvrez où le coller

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

Ensuite, copiez simplement le fichier .pem dans ../2.1.0/rubygems/ssl_certs/ et continuez votre activité.


8
Assurez-vous d'enregistrer avec l' .pemextension, non .pem.txt!
Dan Dascalescu

3
Et si ça ne marche pas? J'ai fait ce que vos réponses disent, mais j'ai toujours l'erreur! 1) J'ai reçu le fichier AddTrustExternalCARoot-2048.pem, 2) J'ai placé le fichier dans C:\Ruby193\lib\ruby\1.9.1\rubygems\ssl_certs, 3) Je cours gem install susyet j'obtiens la même erreurUnable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Vert

essayez de mettre à jour votre installation Ruby ... cet essentiel ne garantit pas la compatibilité descendante avec votre version
beauXjames

1
Quelques notes sur le lien luis lavena que vous avez donné. Vous voudrez peut-être installer rubygems à partir d'un fichier gem au lieu des fichiers zip qu'il mentionne. Je n'ai pas trouvé de commande à installer à partir d'un fichier gem ou zip compressé. Gem ici - rubygems.org/pages/download . La commande est -gem install --local C:\Downloads\rubygems-update-2.4.5.gem
Erran Morad

9
le lien de téléchargement n'est plus valide. Pour ceux d'entre vous qui sont toujours confrontés à ce problème, reportez-vous à la réponse de Dheerendra pour une solution
Llama.new

174

Pour les utilisateurs de Windows

Lien Goto http://rubygems.org/pages/download

  1. Téléchargez le dernier fichier zip (dans mon cas 2.4.5)
  2. Décompressez-le
  3. exécutez "ruby setup.rb" dans le dossier décompressé
  4. maintenant exécuter la commande d'installation de gem

1
A travaillé pour moi sur Windows 8.1, Ruby 2.0.0. À votre santé.
Yi Zeng

7
Meilleure solution pour les utilisateurs de Windows
Sorin Haidau

1
Beaucoup plus facile que les alternatives pour Windows répertoriées dans d'autres réponses, et fonctionnait parfaitement sur Windows 7 64 bits. Merci!
Gurgadurgen

1
Ça ne marche pas pour moi. Devkit n'est pas compatible avec la dernière version de ruby ​​sur Windows 7
roo2

2
Fonctionne pour moi sur Windows 10 et Ruby 2.1.0. Merci!
MSC

54

Si vous souhaitez utiliser la source non SSL, essayez de supprimer d'abord la source HTTPS, puis ajoutez celle HTTP:

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

METTRE À JOUR:

Comme l'indique mpapis, cela ne doit être utilisé que comme solution de contournement temporaire. Il peut y avoir des problèmes de sécurité si vous accédez à RubyGems via la source non SSL.

Une fois que la solution de contournement n'est plus nécessaire, vous devez restaurer la source SSL:

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

pas de vote
négatif

1
Je suis mis à jour la réponse pour essayer de préciser que ce n'est qu'une solution de contournement pour le problème racine. Je viens d'essayer de résoudre le problème de Terin lorsqu'il a essayé d'utiliser la source non SSL.
Eduardo

5
Pour info, je devais faire sudo gem sources -r https://rubygems.org/et sudo gem sources -r http://rubygems.org/. Remarquez la fuite /.
Ross Rogers

Oui, c'est possible. Je pense que cela dépend de la façon dont la source a été ajoutée en premier lieu. Je veux dire, si la source a été ajoutée avec la fin /, elle devrait également être supprimée avec la fin /.
Eduardo

La seule solution qui a fonctionné pour moi pour télécharger le fu @ ^! # Gem. Merci beaucoup!
Genarito

16

Sous Windows, vous devrez utiliser la HTTPsource pour mettre à jour, gempuis revenir à l'utilisation 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/

Edit: Attention, je ne suis pas sûr que ce soit sûr . Est-ce que quelqu'un sait si les packages ruby ​​sont signés? La réponse acceptée ressemble à une meilleure solution.


Merci d'avoir partagé; changer temporairement le https en http a fonctionné mais j'avais besoin de changer directement le gemfile.
Noha Kareem

2
Dans mon cas, j'avais besoin d'un suivi / avec l'URL https.
Alwyn Schoeman

1
En tant que mise à jour de cette réponse, c'est une bonne idée avant de commencer gem sources -là voir vos sources avant et après la mise à jour du système. Si la mise à jour échoue, spécifiez un numéro de version juste après le système -. Voir rubygems.org/gems/rubygems-update/versions ou demander à un collègue pour quels gem -vrapports.
Gary S. Weaver

10

Pour les utilisateurs de Windows (et peut-être d'autres)

Rubygems.org a un guide qui explique non seulement comment résoudre ce problème, mais aussi pourquoi tant de gens le rencontrent: Mise à jour du certificat SSL La raison du problème est que rubygems.org est passé à un certificat SSL plus sécurisé (SHA-2 qui utiliser le cryptage 256 bits). L'outil de ligne de commande rubygems regroupe la référence au certificat correct. Par conséquent, rubygems lui-même ne peut pas être mis à jour à l'aide d'une ancienne version de rubygems. Rubygems doit d'abord être mis à jour manuellement.

Découvrez d'abord quels rubygèmes vous avez:

rubygems v

Selon que vous avez une version 1.8.x, 2.0.x ou 2.2.x, vous devrez télécharger une gem de mise à jour, nommée «rubygems-update-XYZgem», où XYZ est la version dont vous avez besoin. Running 1.8.x: téléchargement: https://github.com/rubygems/rubygems/releases/tag/v1.8.30 Running 2.0.x: téléchargement: https://github.com/rubygems/rubygems/releases/tag/v2 .0.15 Exécution de 2.2.x: téléchargement: https://github.com/rubygems/rubygems/releases/tag/v2.2.3

Installez la gem de mise à jour:

gem install –-local full_path_to_the_gem_file

Exécutez la mise à jour de la gemme:

update_rubygems --no-ri --no-rdoc

Vérifiez que rubygems a été mis à jour:

rubygems v

Désinstaller la gem de mise à jour:

gem uninstall rubygems-update -x

À ce stade, vous pouvez être OK. Mais il est possible que vous ne disposiez pas du dernier fichier de clé publique pour le nouveau certificat. Pour faire ça:

Téléchargez le dernier certificat (actuellement AddTrustExternalCARoot-2048.pem) sur https://rubygems.org/pages/download . Tous les certificats sont également disponibles sur: https://github.com/rubygems/rubygems/tree/master/lib/rubygems/ssl_certs

Découvrez où le mettre:

gem which rubygems

Placez ce fichier dans le répertoire «rubygems \ ssl_certs» à cet emplacement.

Conformément à la validation de rubygems , les certificats sont déplacés vers des répertoires plus spécifiques. Ainsi, actuellement, le certificat (AddTrustExternalCARoot-2048.pem) devrait se trouver sur le chemin suivantlib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem



8

Essayez d'utiliser le site Web source pour les gemmes, par exemple rubygems.org. Utilisez http au lieu de https. Cette méthode n'implique aucun travail tel que l'installation de certificats et tout ça.

Exemple -

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

Cela fonctionne, mais il y a cependant une mise en garde.

La gemme est installée, mais la documentation n'est pas due à des erreurs de cert. Voici l'erreur que j'obtiens

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

La course a gem update --systemfonctionné pour moi


6
Cela a également fonctionné pour moi sur Windows. J'ai dû passer temporairement au HTTP classique, puis mettre à jour, puis revenir à SSL.
Tom Mayfield

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

gem sources - supprimer rubygems.org gem sources -a rubygems.org mise à jour de gem
Stefan Steiger

4

Assurez-vous que l'horloge de votre système est correcte

Cette erreur exacte m'est arrivée aujourd'hui sur une machine virtuelle Ubuntu fonctionnant sur VirtualBox. J'ai essayé la plupart des solutions indiquées ci-dessus avant de remarquer que j'étais revenu d'un très ancien état suspendu et mon horloge était éteinte de plusieurs jours.

La mise à jour de l'horloge a immédiatement résolu mon problème. Voici la commande que j'ai utilisée dans mon cas:

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


4

Désinstaller et réinstaller openssl avec homebrew a résolu ce problème pour moi.

brew uninstall --force openssl

brew install openssl


1
Avec les nouvelles versions de homebrew, vous devrez peut-être exécuter la commande comme ceci: brew uninstall --ignore-dependencies openssl(qui est l'équivalent de l'ancien forcedrapeau)
Batkins

3

Pour les utilisateurs de Fedora

Mettez cert.pemà jour le fichier le plus récent fourni par cURL: 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

Existe-t-il des fenêtres cmd ou powershell équivalentes?
Erran Morad

3

Si vous utilisez Windows, ouvrez https://rubygems.org/ avec Internet Explorer.

Cliquez sur les informations de sécurité et importez le certificat. En fin de compte, votre chaîne de certification est obsolète et vous devez ajouter ce nouveau certificat. N'oubliez pas qu'il ne s'agit pas d'une violation de sécurité tant que vous pouvez valider le certificat comme approuvé.


Cela n'a rien fait pour moi ... OpenSSL utilise-t-il même le magasin de certificats Windows?
Julien Ruffin

2

Dans mon cas, les certificats Ubuntu CA étaient obsolètes. Je l'ai corrigé en exécutant:

 sudo update-ca-certificates

2

Approche / one-liner qui peut être automatisée pour télécharger des gemmes en utilisant HTTP au lieu de HTTPS:

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

Fonctionne parfaitement si vous rencontrez un problème dans un conteneur Docker!
user7364588

1

Le cas particulier de RubyGems (l'outil de ligne de commande) est qu'il nécessite de regrouper à l'intérieur de son code les certificats de confiance, ce qui permet à RubyGems d'établir une connexion avec les serveurs même lorsque le système d'exploitation de base n'est pas en mesure de vérifier leur identité.

Il y a encore quelques mois, ce certificat était fourni par une autorité de certification, mais les certificats plus récents sont fournis par une autre.

Pour cette raison, les installations existantes de RubyGems devraient être mises à jour avant le changement de certificat et donner suffisamment de temps pour que le changement se propage (et que les gens mettent à jour)

Tout le monde peut trouver sa solution en suivant les étapes simples indiquées dans le lien ci-dessous

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


1

Essayer

gem update --system

J'espère que cela résout le problème.


Travaille pour moi. Merci. Ubuntu; Ruby a été installé à l'aide de 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

Téléchargez le fichier cacert.pem depuis http://curl.haxx.se/ca/cacert.pem . Enregistrez ce fichier dans C: \ RailsInstaller \ cacert.pem.

Maintenant, informez Ruby de votre ensemble d'autorité de certification en définissant SSL_CERT_FILE. Pour définir cela dans votre session d'invite de commandes actuelle, tapez:

set SSL_CERT_FILE = C: \ RailsInstaller \ cacert.pem


0

J'ai eu le même problème en essayant d'installer une gemme de concombre. Cependant, j'ai remarqué que gem gem bundler déjà installé avec ruby ​​2.0. J'ai créé un Gemfile.rb dans le dossier du projet avec les gemmes requises et j'ai suivi ces étapes

  1. Accédez au dossier du projet
  2. Type d' installation de bundle

Tous les joyaux requis installés.


0

Pour Illumos / Solaris utilisant OpenCSW pkgutil:

Installez CSWcacertificates avant «l'installation de gem»

pkgutil -yi CSWcacertificates

Si vous utilisez un kit ruby ​​qui n'est pas d'OpenCSW, votre version ruby ​​peut s'attendre à trouver le fichier de certificat à un autre endroit. Dans ce cas, j'ai simplement lié symboliquement /etc/opt/csw/ssl/cert.pem d'OpenCSW à l'endroit attendu.

Vérifiez où ruby ​​s'attend à le trouver:

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

Ensuite, s'il y a un écart, liez-le:

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


0

Pour l'utilisateur Windows:

Après avoir installé Ruby 2.2.3 (+ rubygems 2.5.1) avec succès sur une machine de test avec accès à Internet, j'ai eu cette erreur SSL lorsque j'ai installé bundler sur une machine de production, au sein du réseau.

Comme j'avais des limitations d'accès au réseau, et qu'il n'y avait aucun moyen de modifier les paramètres d'accès SSL, et en fonction des messages d'erreur, j'ai effectué les étapes ci-dessous pour pouvoir terminer l'installation du bundler (cela peut sembler fou, mais cela travaillé...).

Grâce à une machine avec un accès illimité à Internet, téléchargé les fichiers suivants:

J'ai ajouté ces fichiers sur un serveur intranet, en conservant la structure de dossiers des liens ci-dessus:

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

Ensuite, j'ai ajouté mon intranet pour accéder à la source de gemme:

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

J'ai couru avec le succès le "bundle d'installation de gemmes" après l'installation, il a suffi de retirer mon intranet de la gemme:

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

J'espère que c'est utile dans toute situation similaire ...


0

En tant qu'utilisateur Windows 10, j'ai suivi la réponse de Dheerendra , et cela a fonctionné pour moi un jour. Le lendemain, j'ai de nouveau rencontré le problème et sa solution n'a pas fonctionné. Pour moi, le correctif consistait à mettre à jour bundleravec:

gem update bundler

Je crois que ma version de datait de bundlerplus de quelques mois.


0

Assurez-vous que vous avez installé ruby ​​avec l' option --disable-binary , sinon, désinstallez-le et réinstallez-le avec l'option.

plus d'infos ici


0

La réponse n'est plus valable. Depuis que j'ai rencontré le problème avec des rubis Windows plus anciens en ce moment, je publierai la réponse.

Quand j'ai voulu installer une gemme de support actif:

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)

Les étapes suivantes doivent copier uniquement les certificats de ruby ​​Windows plus récent. Prenez le dernier rubis (ou au moins rubis 2.4.0 ) et procédez comme suit:

copiez les certificats de ces répertoires (adaptez-vous à vos besoins):
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

à destination (ajustez à nouveau ce dont vous avez besoin):
C:\prg_sdk\rubies\Ruby231-p112-x64\lib\ruby\2.3.0\rubygems\ssl_certs

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.