l’installation de l’ensemble échoue avec l’erreur de vérification du certificate SSL

Lorsque j’exécute une bundle install pour mon projet Rails 3 sur Centos 5.5, cela échoue avec une erreur:

 Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificatee B: certificatee verify failed (https://bb-m.rubygems.org/gems/multi_json-1.3.2.gem) An error occured while installing multi_json (1.3.2), and Bundler cannot continue. Make sure that `gem install multi_json -v '1.3.2'` succeeds before bundling. 

Quand j’essaie d’installer le gem manuellement (par gem install multi_json -v '1.3.2' ) ça marche. Le même problème se produit avec plusieurs autres joyaux. J’utilise RVM (1.12.3), ruby ​​1.9.2, bundler 1.1.3.

Comment le réparer?

Mettre à jour

Maintenant que j’ai karma, ça suffira pour que tout le monde sache que cela aurait dû être résolu.

re: via Ownatik à nouveau l’ installation du paquet échoue avec l’erreur de vérification du certificate SSL

 gem update --system 

Ma réponse est toujours correcte et laissée ci-dessous pour référence si cela finit par ne pas fonctionner pour vous.


Honnêtement, la meilleure solution temporaire est de

[…] utilisez la version non-ssl de rubygems dans votre fichier gemfile comme solution temporaire.

via user Ownatik

ce qu’ils veulent dire est en haut du changement de répertoire de l’application Gemfile dans vos rails

source 'https://rubygems.org'

à

source 'http://rubygems.org'

notez que la deuxième version est http au lieu de http s

Remplacez la source ssl gem par non-ssl en tant que solution temporaire:

La raison en est les vieux rubygems. Vous devez d’abord mettre à jour la partie système en utilisant une source non ssl:

gem update --system --source http://rubygems.org/ (mise à jour temporaire de la partie système en utilisant une connexion non ssl).

Maintenant, vous êtes prêt à utiliser gem update .

Si vous êtes sur un Mac et que vous utilisez une version récente de RVM (~ 1.20), la commande suivante a fonctionné pour moi.

 rvm osx-ssl-certs update 

Ce problème devrait maintenant être résolu. Mettez à jour rubygems ( gem update --system ), assurez-vous que openssl est à la dernière version de votre système d’exploitation ou essayez ces astuces qui ne fonctionnent toujours pas: http://railsapps.github.com/openssl-certificatee-verify-failed. html

Solution temporaire (mentionnée par Ownatik):

Créez ou modifiez un fichier appelé .gemrc dans votre chemin d’origine, y compris la ligne :ssl_verify_mode: 0

Cela empêchera Bundler de vérifier les certificates SSL des gems lorsqu’il tentera de les installer.

Pour les périphériques * nix, “chemin du domicile” signifie ~/.gemrc . Vous pouvez également créer /etc/gemrc si vous préférez. Pour Windows XP, «chemin du domicile» signifie c:\Documents and Settings\All Users\Application Data\gemrc . Pour Windows 7, C:\ProgramData\gemrc

Sur Windows 7, vous pouvez télécharger le fichier cacert.pem à partir d’ ici et définir la variable d’environnement SSL_CERT_FILE sur le chemin où vous stockez le certificate, par exemple

 SET SSL_CERT_FILE="C:\users\\cacert.pem" 

ou vous pouvez définir la variable dans votre script comme ceci ENV['SSL_CERT_FILE']="C:/users//cacert.pem"

Remplacez par votre propre nom d’utilisateur.

La vraie solution à ce problème, si vous utilisez RVM:

  1. Mettre à jour rubygems: gem update --system
  2. Utilisez RVM pour actualiser les rvm osx-ssl-certs update all SSL: rvm osx-ssl-certs update all

Astuce pour cette astuce sur le projet RailsApps !

Pour ceux d’entre vous qui ont installé ruby ​​via RVM et veulent une solution rapide (préférant ne pas lire selon la demande de Bruno), essayez ceci:

 rvm remove 1.9.x (or whatever version of ruby you are using) rvm pkg install openssl rvm install 1.9.2 --with-openssl-dir=$rvm_path/usr 

Pour plus de détails, voici le lien où j’ai trouvé la solution.

http://railsapps.github.com/openssl-certificatee-verify-failed.html

BTW, je n’ai pas eu à toucher mes certificates sur Ubuntu.

Mieux encore, ce n’est pas une solution de contournement. Il va télécharger des gemmes via SSL et échouer s’il y a un problème comme un attaquant du milieu, ce qui est bien mieux que de simplement désactiver la sécurité.

Cela a été corrigé

http://guides.rubygems.org/ssl-certificatee-update/

Maintenant que RubyGems 2.6.x a été publié, vous pouvez mettre à jour manuellement cette version.

Télécharger https://rubygems.org/downloads/rubygems-update-2.6.7.gem

S’il vous plaît télécharger le fichier dans un répertoire que vous pouvez pointer plus tard (par exemple, la racine de votre disque dur C 🙂

Maintenant, en utilisant votre invite de commandes:

 C:\>gem install --local C:\rubygems-update-2.6.7.gem C:\>update_rubygems --no-ri --no-rdoc 

Après cela, gem –version devrait signaler la nouvelle version de la mise à jour.

Vous pouvez maintenant désinstaller sans risque rubygems-update gem:

 C:\>gem uninstall rubygems-update -x 

Vous pouvez télécharger une liste de certificates CA à partir du site Web de curl à l’adresse http://curl.haxx.se/ca/cacert.pem

Ensuite, définissez la variable d’environnement SSL_CERT_FILE pour indiquer à Ruby de l’utiliser. Par exemple, sous Linux:

 $ SSL_CERT_FILE=~/cacert.pem bundle install 

(Référence: https://gist.github.com/fnichol/867550 )

Instruction de copier-coller simple donnée ici à propos du fichier .pem

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

Échec de la vérification du certificate

Si vous avez lu les sections précédentes, vous saurez ce que cela signifie (et honte> si vous ne l’avez pas).

Nous devons télécharger AddTrustExternalCARoot-2048.pem . Ouvrez une invite de commandes et tapez:

C:> gem les rubygems C: /Ruby21/lib/ruby/2.1.0/rubygems.rb Localisons maintenant ce répertoire. À partir de la même fenêtre, entrez la partie chemin jusqu’à l’extension du fichier, mais en utilisant plutôt des barres obliques inverses:

C:> start C: \ Ruby21 \ lib \ ruby ​​\ 2.1.0 \ rubygems Cela ouvrira une fenêtre Explorer dans le répertoire indiqué.

Étape 3: Copier le nouveau certificate de confiance

Maintenant, localisez le répertoire ssl_certs et copiez le fichier .pem obtenu à l’étape précédente.

Il sera répertorié avec d’autres fichiers comme GeoTrustGlobalCA.pem.

même problème mais avec des gemmes différentes ici:

 Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificatee B: certificatee verify failed (https://bb-m.rubygems.org/gems/builder-3.0.0.gem) An error occured while installing builder (3.0.0), and Bundler cannot continue. Make sure that `gem install builder -v '3.0.0'` succeeds before bundling. 

solution temporaire: gem install builder -v '3.0.0' permet de continuer l’ bundle install

Voici comment vous corrigez ce problème sous Windows:

télécharger le fichier .perm puis définir le SSL_CERT_FILE dans l’invite de commande

https://gist.github.com/fnichol/867550

J’ai une erreur légèrement différente, peut-être liée, sur Ubuntu 12.04:

 Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=unknown state: sslv3 alert handshake failure (https://d2chzxaqi4y7f8.cloudfront.net/gems/activesupport-3.2.3.gem) An error occured while installing activesupport (3.2.3), and Bundler cannot continue. Make sure that `gem install activesupport -v '3.2.3'` succeeds before bundling. 

Cela se produit lorsque je lance l’ bundle install avec la source 'https://rubygems.org' dans un Gemfile.

Ceci est un problème avec OpenSSL sur Ubuntu 12.04. Voir le numéro 319 de Rubygems .

Pour résoudre ce problème, lancez apt-get update && apt-get upgrade sur Ubuntu 12.04 pour mettre à jour votre OpenSSL.

La solution la plus simple:

 rvm pkg install openssl rvm reinstall all --force 

Voila!

J’ai été en mesure de suivre cela jusqu’au fait que les binarys téléchargés par rvm ne sont pas rvm avec OpenSSL d’OS X, qui est ancien et n’est plus utilisé par le système d’exploitation.

La solution pour moi était de forcer la compilation lors de l’installation de Ruby via rvm :

 rvm reinstall --disable-binary 2.2 

Mon correctif permanent pour Windows:

  1. Téléchargez le CACert , enregistrez-le sous C:\ruby\ssl_certs\GlobalSignRootCA.pem depuis http://guides.rubygems.org/ssl-certificatee-update/

  2. Créez une variable système nommée ” SSL_CERT_FILE “, définie sur C:\ruby\ssl_certs\GlobalSignRootCA.pem .

  3. Réessayez: gem install bundler :

 C:\gem sources *** CURRENT SOURCES *** https://rubygems.org/ C:\gem install bundler Fetching: bundler-1.13.5.gem (100%) Successfully installed bundler-1.13.5 1 gem installed 

Thx à @ Alexander.Iljushkin pour:

gem update --system --source http://rubygems.org/

Après ce lot a toujours échoué et la solution à cela était:

gem install bundler

Je recevais une erreur similaire. Voici comment j’ai résolu ce problème: Dans votre répertoire de chemin d’access, recherchez Gemfile. Editez la source du fichier gemfile sur http au lieu de https et enregistrez-la. Cela pourrait installer le bundler sans la délivrance du certificate SSL.l

Pour Windows, vérifiez votre version de gem avec

 gem --version 

Ensuite, mettez à jour votre gem comme suit:

  • Running 1.8.x: télécharger 1.8.30
  • Lancer 2.0.x: télécharger 2.0.15
  • Running 2.2.x: télécharger 2.2.3

S’il vous plaît télécharger le fichier dans un répertoire que vous pouvez pointer plus tard (par exemple, la racine de votre disque dur C 🙂

Maintenant, en utilisant votre invite de commandes:

 C:\>gem install --local C:\rubygems-update-1.8.30.gem C:\>update_rubygems --no-ri --no-rdoc 

Maintenant, l’installation groupée sera réussie sans erreur de vérification du certificate SSL.

Des instructions plus détaillées sont ici

Cela a fonctionné pour moi:

  • télécharger la dernière gem sur https://rubygems.org/pages/download
  • installer la gem avec gem install --local [path to downloaded gem file]
  • mettre à jour les gems avec update_rubygems
  • vérifiez que vous êtes sur la dernière version de gem --version avec gem --version

Je devais réinstaller openssl:

 brew uninstall --force openssl brew install openssl 

J’ai été récemment confronté à ce problème et j’ai suivi les étapes décrites ici . Il se peut que vous ne pointiez pas vers le bon certificate OpenSSL. Après avoir exécuté:

 rvm osx-ssl-certs status all rvm osx-ssl-certs update all 

et

 export SSL_CERT_FILE=/etc/ssl/certs/ca-certificatees.crt 

le paquet complet a couru!

Télécharger rubygems-update-2.6.7.gem .

Maintenant, en utilisant votre invite de commandes:

 C:\>gem install --local C:\rubygems-update-2.6.7.gem C:\>update_rubygems --no-ri --no-rdoc 

Après cela, gem --version devrait signaler la nouvelle version de la mise à jour.

Vous pouvez maintenant désinstaller sans risque rubygems-update gem:

 C:\>gem uninstall rubygems-update -x Removing update_rubygems Successfully uninstalled rubygems-update-2.6.7 

Pour noter, si vous récupérez des gems à partir d’une source certifiée SSL par une autorité de certificateion interne (ou que vous vous connectez à une source externe via un proxy Web d’entreprise avec inspection SSL), pointez votre variable env SSL_CERT_FILE sur votre chaîne de certificates. . Cela nécessite très probablement d’exporter votre certificate racine depuis votre magasin de certificates (System Keychain sur macOS) vers un emplacement accessible depuis votre shell, à savoir:

 export SSL_CERT_FILE=~/RootCert.pem 

Si vous utilisez rails-assets

Si vous utilisiez https://rails-assets.org/ pour gérer vos actifs, aucune réponse ne vous sera utile. Même la conversion en http n’aidera pas.

La solution la plus simple consiste à utiliser cette source à la place, http://insecure.rails-assets.org . Cela a été mentionné dans leur page d’accueil .

La seule chose qui a fonctionné pour moi sur les systèmes Windows et Ruby 1.9 hérités est le téléchargement du fichier cacert à partir de http://guides.rubygems.org/ssl-certificatee-update/

Et puis en cours d’exécution ci-dessous la commande avant d’exécuter l’installation de bundle

 bundle config --global ssl_ca_cert /path/to/file.pem