web-dev-qa-db-fra.com

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

J'essaie de faire le tutoriel de Michael Hartl. Lorsque j'essaie d'installer Rails 3.2.14 dans mon gemset, le problème suivant s'affiche:

$ gem install Rails -v 3.2.14

ERREUR: Impossible de trouver un joyau valide 'Rails' (= 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: échec de la vérification du certificat ( https://s3.amazonaws.com/production .s3.rubygems.org/specs.4.8.gz )

Après avoir cherché Google, j'ai découvert que je pouvais utiliser une source non-SSL pour rubygems. J'ai donc lancé:

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

Ensuite, lorsque j’ai essayé d’installer à nouveau Rails, c’est réussi. Cependant, j'ai toujours le problème ci-dessus mais en guise d'avertissement:

AVERTISSEMENT: impossible d'extraire les données de ' https://rubygems.org/ ': SSL_connect retourné = 1 errno = 0 state = SSLv3 lire le certificat du serveur B: échec de la vérification du certificat ( https: //s3.amazonaws .com/production.s3.rubygems.org/specs.4.8.gz )

Comment puis-je supprimer cet avertissement/erreur entièrement?

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
255

Pour les utilisateurs de RVM et OSX

Assurez-vous que vous utilisez la dernière version de journal:

rvm get stable

Ensuite, vous pouvez faire deux choses:

  1. Mettre à jour les certificats:

    rvm osx-ssl-certs update all
    
  2. Mettre à jour les rubygems:

    rvm rubygems latest
    

Pour les utilisateurs non-RVM

Trouver le chemin pour le 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 paquet 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é)

Note Windows

Le Ruby Installer les versions pour Windows sont préparées par Luis Lavena et le chemin d'accès aux certificats indiquera 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 for fix.

370
mpapis

Dernières découvertes ...

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

Plus important encore ... download https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

Déterminez 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 sur votre entreprise.

241
beauXjames

Pour les utilisateurs de Windows

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

  1. Télécharger le dernier fichier Zip (dans mon cas 2.4.5)
  2. Décompressez 
  3. lancez "Ruby setup.rb" dans un dossier non compressé
  4. lancez maintenant la commande gem install
175
Dheerendra Kulkarni

Si vous souhaitez utiliser une source non-SSL, essayez d’abord de supprimer la source HTTPS, puis d’ajouter celle HTTP:

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

METTRE À JOUR:

Comme le dit mpapis, cela ne devrait être utilisé que comme solution temporaire. Il peut y avoir des problèmes de sécurité si vous accédez à RubyGems via une 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
51
eduardo

Sous Windows, vous devrez utiliser HTTP source pour mettre à jour gem, puis revenir en utilisant 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: Warning Je ne sais pas si c'est sûr . Est-ce que quelqu'un sait si les paquets Ruby sont signés? La réponse acceptée semble être une meilleure solution.

15
roo2

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

Rubygems.org a un guide qui explique non seulement comment résoudre ce problème, mais aussi pourquoi beaucoup de gens l’ont: Mise à jour du certificat SSL La raison du problème est rubygems.org est passé à un système plus sécurisé. Certificat SSL (SHA-2 utilisant le cryptage 256 bits). L'outil de ligne de commande rubygems regroupe la référence au bon certificat. Par conséquent, rubygems ne peut pas être mis à jour avec une version antérieure de rubygems. Rubygems doit d'abord être mis à jour manuellement.

D'abord, renseignez-vous sur vos rubygems:

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. .x: télécharger: https://github.com/rubygems/rubygems/releases/tag/v1.8.30 Lancer 2.0.x: télécharger: https://github.com/rubygems/ rubygems/releases/tag/v2.0.15 En cours d'exécution 2.2.x: télécharger: https://github.com/rubygems/rubygems/releases/tag/v2.2.3

Installez le gem de mise à jour: 

gem install –-local full_path_to_the_gem_file

Exécutez le gem de mise à jour:

update_rubygems --no-ri --no-rdoc

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

rubygems –v

Désinstaller Update gem:

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) À partir de https://rubygems.org/pages/download . Tous les certificats sont également situés à: 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 à rubygems commit , les certificats sont déplacés vers des répertoires plus spécifiques. Ainsi, le certificat (AddTrustExternalCARoot-2048.pem) est actuellement sur le chemin suivant: lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

10
John Pankowicz

Essayez d’utiliser le site Web source pour les gemmes, i.e rubygems.org. Utilisez http au lieu de https. Cette méthode ne nécessite aucun travail tel que l’installation de certs, etc.

Exemple - 

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

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

La gem est installée, mais la documentation n’est pas due à des erreurs de cert. Voici l'erreur que je reçois 

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)
8
Borat Sagdiyev

Courir gem update --system a fonctionné pour moi

7
user3408293

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

brew uninstall --force openssl

brew install openssl

4
ntj

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. Rappelez-vous qu'il ne s'agit pas d'une violation de sécurité tant que vous pouvez valider le certificat en tant que certificat de confiance.

3
Paulo Fidalgo

Pour les utilisateurs de Fedora

Mettez à jour le cert.pem vers le dernier fichier 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
3
ENDOH takanao

Assurez-vous que votre horloge système est correcte

Cette erreur exacte m’est arrivée aujourd’hui sur une machine virtuelle Ubuntu exécutée sur VirtualBox. J'ai essayé la plupart des solutions présentées ci-dessus avant de remarquer que mon état de suspension était très ancien et que 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

3
dbrewer

Dans mon cas, les certificats de l'autorité de certification Ubuntu étaient périmés. Je l'ai corrigé en exécutant:

 Sudo update-ca-certificates
2
maniek

Essayer 

gem update --system

J'espère que ça résoud le problème.

1
puneet18

Le cas particulier de RubyGems (outil de ligne de commande) est qu'il nécessite de regrouper dans 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 ne peut pas en vérifier l'identité.

Jusqu'à il y a quelques mois, ce certificat était fourni par une autorité de certification, mais le certificat le plus récent est fourni 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 les personnes à mettre à 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
ImranNaqvi

J'ai eu le même problème en essayant d'installer un joyau de concombre. Cependant, j’ai remarqué que cette gemme d’ensemble avait déjà été installée avec Ruby 2.0 .

  1. Naviguer dans le dossier du projet
  2. Tapez bundle install

Toutes les gemmes requises installées.

0
user3037926

Pour 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é l’outil de groupage 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’existait 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 de l’emballeur , mais ça a marché ...).

Via une machine avec un accès illimité à Internet, a téléchargé les fichiers suivants:

J'ai ajouté ces fichiers sur un serveur intranet, en conservant la structure des 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 gem:

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

J'ai couru avec succès le "bundle d'installation de pierres précieuses" après l'installation, il suffisait de retirer mon intranet de la pierre précieuse:

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

J'espère que cela sera utile dans toute situation similaire ....

0
Rogério Arantes

Une approche/une ligne qui peut être automatisée pour télécharger des gems en utilisant HTTP au lieu de HTTPS:

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

Ou peut être empêché par pare-feu comme moi. Essaye ça:

Sudo gem install --http-proxy http: // localhost: port cocoapods -V

0
Victor Choy

Pour Illumos/Solaris utilisant OpenCSW pkgutil:

Installez CSWcacertificates avant "gem install"

pkgutil -yi CSWcacertificates

Si vous utilisez un kit Ruby qui ne provient pas d'OpenCSW, votre version de Ruby peut s'attendre à trouver le fichier de certificat à un autre endroit. Dans ce cas, j'ai simplement lié de façon symbolique le fichier /etc/opt/csw/ssl/cert.pem d'OpenCSW à l'emplacement prévu.

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 une différence, liez-la: 

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

Assurez-vous que vous avez installé Ruby avec l'option --disable-binary, Sinon, désinstallez-la et réinstallez-la avec l'option.

plus d'infos ici 

0
Feuda

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

gem update bundler

Je crois que ma version de bundler datait de plus de quelques mois.

0
Alexander

La réponse n'est plus valide. Depuis que j'ai rencontré le problème avec les anciens Windows Ruby maintenant je vais poster la réponse. 

Quand j'ai voulu installer un bijou ActiveSupport:

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 uniquement copier les certificats des nouvelles fenêtres Ruby . Prenez le dernier Ruby (ou au moins Ruby 2.4.0) et procédez comme suit:

copier les certificats de ces répertoires (à adapter à 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 (à nouveau ajuster à ce que vous avez besoin):
C:\prg_sdk\rubies\Ruby231-p112-x64\lib\Ruby\2.3.0\rubygems\ssl_certs

0
tukan