Lorsque je lance bundle install
pour mon projet Rails 3 sur Centos 5.5, il échoue avec une erreur:
Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3
read server certificate B: certificate 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'essaye d'installer la gem manuellement (par gem install multi_json -v '1.3.2'
), cela fonctionne. Le même problème se produit avec plusieurs autres gemmes. J'utilise RVM (1.12.3), Ruby 1.9.2, bundler 1.1.3.
Comment le réparer?
Mettre à jour
Maintenant que j’ai un karma qui .. assez extrait de cette réponse, tout le monde devrait savoir que cela aurait dû être corrigé.
re: via Ownatik à nouveau l’installation du paquet échoue avec une erreur de vérification du certificat 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 gem comme solution temporaire.
via l'utilisateur Ownatik
ce qu'ils signifient est en haut de la Gemfile
de votre Rails changement de répertoire d'application
source 'https://rubygems.org'
à
source 'http://rubygems.org'
notez que la deuxième version est http au lieu de http s
Remplacez le code source ssl par un non-ssl en tant que solution temporaire:
La raison est 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 à l'aide d'une connexion autre que SSL).
Vous êtes maintenant prêt à utiliser gem update
.
Si vous utilisez un Mac et 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 corrigé. Mettez Rubygems à jour (gem update --system
), assurez-vous que openssl est à la dernière version disponible sur votre système d'exploitation ou essayez les astuces suivantes: il ne fonctionne toujours pas: http://railsapps.github.com/openssl-certificate- verify-failed.html
Solution temporaire (à laquelle allusion de Ownatik):
Créez ou modifiez un fichier nommé .gemrc dans votre chemin de base, y compris la ligne :ssl_verify_mode: 0
Cela empêchera le groupeur de vérifier les certificats SSL des pierres précieuses lorsqu'il tentera de les installer.
Pour les périphériques * nix, "chemin d'accès" signifie ~/.gemrc
. Vous pouvez également créer /etc/gemrc
si vous préférez. Pour Windows XP, "chemin d'accès au domicile" signifie c:\Documents and Settings\All Users\Application Data\gemrc
. Pour Windows 7, C:\ProgramData\gemrc
Sous Windows7, vous pouvez télécharger le fichier cacert.pem à partir de ici et définir la variable de variable environnement SSL_CERT_FILE sur le chemin où vous stockez le certificat, par exemple
SET SSL_CERT_FILE="C:\users\<username>\cacert.pem"
ou vous pouvez définir la variable dans votre script comme ceci ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"
Remplacez <nom d'utilisateur> par votre propre nom d'utilisateur.
La vraie solution à ce problème, si vous utilisez RVM:
gem update --system
rvm osx-ssl-certs update all
Astuce de chapeau à cette astuce sur le projet RailsApps !
Pour ceux d'entre vous qui ont installé Ruby via RVM et qui souhaitent une solution rapide (préférant ne pas lire à 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-certificate-verify-failed.html
BTW, je n'ai pas eu à toucher mes certificats sur Ubuntu.
Le meilleur de tous, ce n'est pas une solution de contournement. Il téléchargera des gemmes via SSL et échouera s’il ya un problème semblable à une attaque entre hommes qui est bien mieux que de simplement désactiver la sécurité.
Vous pouvez télécharger une liste des certificats d’AC sur le site Web de curl à l’adresse http://curl.haxx.se/ca/cacert.pem .
Définissez ensuite 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 )
Cela a été corrigé
http://guides.rubygems.org/ssl-certificate-update/
Maintenant que RubyGems 2.6.x est disponible, vous pouvez mettre à jour manuellement cette version.
Télécharger https://rubygems.org/downloads/rubygems-update-2.6.7.gem
Veuillez télécharger le fichier dans un répertoire vers lequel vous pourrez par la suite pointer (par exemple, la racine de votre disque dur C :)
Maintenant, en utilisant votre invite de commande:
C:\>gem install --local C:\rubygems-update-2.6.7.gem
C:\>update_rubygems --no-ri --no-rdoc
Ensuite, gem --version devrait signaler la nouvelle version de la mise à jour.
Vous pouvez maintenant désinstaller en toute sécurité rubygems-update gem:
C:\>gem uninstall rubygems-update -x
Instruction de copier-coller simple donnée ici à propos du fichier .pem
https://Gist.github.com/luislavena/f064211759ee0f806c88
Pour la vérification du certificat a échoué
Si vous avez lu les sections précédentes, vous saurez ce que cela signifie (et vous aurez honte si vous ne l’avez pas fait).
Nous devons télécharger AddTrustExternalCARoot-2048.pem . Ouvrez une invite de commande et tapez:
C:> gem qui rubygems C: /Ruby21/lib/Ruby/2.1.0/rubygems.rb Maintenant, localisons ce répertoire. Dans la même fenêtre, entrez la partie du chemin jusqu’à l’extension de fichier, mais utilisez plutôt des barres obliques inverses:
C:> démarrer C:\Ruby21\lib\Ruby\2.1.0\rubygems Ceci ouvrira une fenêtre de l'Explorateur dans le répertoire indiqué.
Étape 3: Copier le nouveau certificat 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.
Voici comment résoudre ce problème sous Windows:
téléchargez le fichier .perm puis définissez SSL_CERT_FILE dans l'invite de commande
La solution la plus simple:
rvm pkg install openssl
rvm reinstall all --force
Voila!
même problème mais avec une gemme différente ici:
Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3
read server certificate B: certificate 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 bundle install
Mon correctif permanent pour Windows:
Téléchargez le CACert , enregistrez sous C:\Ruby\ssl_certs\GlobalSignRootCA.pem
depuis http://guides.rubygems.org/ssl-certificate-update/
Créez une variable système nommée " SSL_CERT_FILE ", définie sur C:\Ruby\ssl_certs\GlobalSignRootCA.pem
.
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
Merci à @ Alexander.Iljushkin pour:
gem update --system --source http://rubygems.org/
Après que cet ensemble ait encore échoué, la solution à cela était:
gem install bundler
Je reçois une erreur légèrement différente, mais 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 bundle install
avec source 'https://rubygems.org'
dans un Gemfile.
C'est un problème avec OpenSSL sur Ubuntu 12.04. Voir numéro 319 de Rubygems .
Pour résoudre ce problème, exécutez apt-get update && apt-get upgrade
sur Ubuntu 12.04 pour mettre à niveau votre OpenSSL.
J'ai pu comprendre le fait que les fichiers binaires téléchargés par rvm
ne sont pas lus par Nice 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 avec rvm
:
rvm reinstall --disable-binary 2.2
Je recevais une erreur similaire. Voici comment j'ai résolu ceci: Dans votre répertoire de chemin, recherchez Gemfile. Editez le fichier source dans le fichier gem en http au lieu de https et enregistrez-le. Cela pourrait installer le bundler sans le certificat SSL issue.l
Pour la machine Windows, vérifiez votre version de gem avec
gem --version
Puis mettez à jour votre bijou comme suit:
Veuillez télécharger le fichier dans un répertoire vers lequel vous pourrez par la suite pointer (par exemple, la racine de votre disque dur C :)
Maintenant, en utilisant votre invite de commande:
C:\>gem install --local C:\rubygems-update-1.8.30.gem
C:\>update_rubygems --no-ri --no-rdoc
Désormais, l'installation de l'ensemble réussira sans erreur de vérification du certificat SSL.
Des instructions plus détaillées sont ici
Cela a fonctionné pour moi:
gem install --local [path to downloaded gem file]
update_rubygems
gem --version
Je venais tout juste de faire face à ce problème et de suivre les étapes décrites ici . Il se peut que vous ne dirigiez pas le bon certificat OpenSSL. Après avoir couru:
rvm osx-ssl-certs status all
rvm osx-ssl-certs update all
et
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
le paquet complet a couru!
Télécharger rubygems-update-2.6.7.gem .
Maintenant, en utilisant votre invite de commande:
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 en toute sécurité rubygems-update gem:
C:\>gem uninstall rubygems-update -x
Removing update_rubygems
Successfully uninstalled rubygems-update-2.6.7
J'ai dû réinstaller openssl:
brew uninstall --force openssl
brew install openssl
Si vous extrayez des gemmes d'une source dont le certificat SSL est approuvé par une autorité de certification interne (ou si vous vous connectez à une source externe via un proxy Web d'entreprise avec inspection SSL), pointez votre variable env SSL_CERT_FILE vers votre chaîne de certificats. . Cela nécessite probablement uniquement l'exportation de votre certificat racine à partir de votre magasin de certificats (trousseau système sur macOS) vers un emplacement accessible à partir de votre shell, à savoir:
export SSL_CERT_FILE=~/RootCert.pem
La seule chose qui a fonctionné pour moi sur l'ancien système Windows et la version de Ruby 1.9 est le téléchargement du fichier cacert depuis http://guides.rubygems.org/ssl-certificate-update/
Et puis en exécutant la commande ci-dessous avant d'exécuter l'installation du paquet
bundle config --global ssl_ca_cert /path/to/file.pem
Rails-assets
Si vous utilisiez https://Rails-assets.org/
pour gérer vos actifs, aucune réponse ne vous aiderait. Même convertir en http
ne vous aidera pas.
Le correctif le plus simple utilise plutôt cette source, http://insecure.Rails-assets.org
. Cela a été mentionné dans leur page d'accueil .