l'installation de bundle échoue avec une erreur de vérification de certificat SSL
quand j'exécute bundle install
pour mes Rails 3 projet 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'essaie d'installer le gem manuellement (par gem install multi_json -v '1.3.2'
) il 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 corriger?
28 réponses
mise à Jour
maintenant que j'ai karma wh..err extrait assez de cette réponse tout le monde devrait savoir que cela aurait été résolu.
re: via Ownatik nouveau bundle install échoue avec SSL certificat de vérification d'erreur
gem update --system
ma réponse est toujours correcte et est 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 gemfile comme solution temporaire.
par utilisateur Ownatik
ce qu'ils signifient est au sommet de la Gemfile
dans votre changement de répertoire d'application de rails
source 'https://rubygems.org'
à
source 'http://rubygems.org'
notez que la seconde version est http au lieu de http s 151970920"
remplacer la source de gem ssl par une solution non-ssl temporaire:
- gem sources-r https://rubygems.org /
- gem sources -a http://rubygems.org /
la raison est le vieux rubygems. Vous devez mettre à jour la partie du système en utilisant d'abord non ssl source:
gem update --system --source http://rubygems.org/
(mise à jour temporaire d'une partie du système en utilisant une connexion non-ssl).
maintenant vous êtes prêt à utiliser gem update
.
si vous êtes sur 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 doit être résolu. Mettez à jour rubygems ( gem update --system
), assurez-vous qu'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-certificate-verify-failed.html
solution temporaire (telle que mentionnée par Ownatik):
Créer ou modifier un fichier appelé .gemrc dans votre maison chemin, y compris la ligne :ssl_verify_mode: 0
cela empêchera le bundler de vérifier les certificats SSL des gemmes quand il tente de les installer.
pour les dispositifs *nix," chemin d'accès "signifie ~/.gemrc
. Vous pouvez aussi créer /etc/gemrc
si vous préférez. Pour Windows XP,' home path ' signifie c:\Documents and Settings\All Users\Application Data\gemrc
. Pour Windows 7, C:\ProgramData\gemrc
sur windows7 vous pouvez télécharger le cacert.fichier pem de ici et mettre L'environnement variable SSL_CERT_FILE sur le chemin où vous stockez le certificat eg
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"
remplacer
la vraie solution à ce problème, si vous utilisez RVM:
- mise à Jour de rubygems:
gem update --system
- utiliser RVM pour rafraîchir les certs SSL:
rvm osx-ssl-certs update all
astuce Chapeau à cette astuce sur la RailsApps projet !
pour ceux d'entre vous qui ont ruby installé par RVM et qui veulent une solution rapide (préférant ne pas lire à la demande de Bruno) il suffit d'essayer 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.
mieux que tout, ce n'est pas une solution. Il va télécharger des gemmes par SSL et échouer si il ya un problème comme un homme au milieu attaque qui est bien mieux que de désactiver la sécurité.
Cela a été corrigé
http://guides.rubygems.org/ssl-certificate-update /
maintenant que RubyGems 2.6.x a été libéré, 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 plus tard à (eg. 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
après cela, gem -- version doit signaler la nouvelle version de mise à jour.
vous pouvez maintenant désinstaller en toute sécurité rubygems-mise à jour gem:
C:\>gem uninstall rubygems-update -x
vous pouvez télécharger une liste des certificats CA sur le site Web de curl à http://curl.haxx.se/ca/cacert.pem
définit alors la variable D'environnement SSL_CERT_FILE pour dire à Ruby de l'utiliser. Par exemple, dans Linux:
$ SSL_CERT_FILE=~/cacert.pem bundle install
(référence: https://gist.github.com/fnichol/867550 )
simple copier coller instruction donnée ici environ .fichier pem
https://gist.github.com/luislavena/f064211759ee0f806c88
Pour la vérification de certificat a échoué
si vous avez lu les sections précédentes, vous saurez ce que cela signifie (Et honte à vous si vous ne l'avez pas lu).
nous avons besoin de télécharger Addtrustextexternalcaroot-2048.pem . Ouvrez une invite de commande et tapez:
c:>gemmes qui rubygems C:/Ruby21/lib/ruby/2.1.0/rubygems.RB Maintenant, localisons ce répertoire. Depuis la même fenêtre, entrez la partie chemin jusqu'à l'extension du fichier, mais en utilisant les antislashs à la place:
C:>démarrer C:\Ruby21\lib\ruby\2.1.0\rubygems Ceci ouvrira une fenêtre Explorer à l'intérieur du répertoire que nous avons indiqué.
Étape 3: copie du nouveau certificat de fiducie
maintenant, localisez le répertoire ssl_certs et copiez le .fichier pem que nous avons obtenu de l'étape précédente à l'intérieur.
il sera listé 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 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 poursuivre bundle install
sous Windows, vous pouvez corriger ce problème avec:
de téléchargement .le fichier perm définit alors le fichier SSL_CERT_FILE dans l'invite de commande
j'obtiens une erreur légèrement différente, bien que 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 quand je cours bundle install
avec source 'https://rubygems.org'
dans un Gemfile.
il s'agit d'un problème avec OpenSSL sur Ubuntu 12.04. Voir Rubygems question n ° 319 .
pour corriger cela, 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
voilà!
j'ai été en mesure de tracer ce jusqu'au fait que les binaires que rvm
téléchargements ne jouent pas bien avec OpenSSL D'OS X, qui est vieux 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 fixe permanent pour Windows:
-
Télécharger "le 151990920" CACert , enregistrer sous
C:\ruby\ssl_certs\GlobalSignRootCA.pem
à partir de http://guides.rubygems.org/ssl-certificate-update/ -
crée la variable système nommée " SSL_CERT_FILE ", définie à
C:\ruby\ssl_certs\GlobalSignRootCA.pem
. -
Essayez de nouveau:
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 bundler encore échoué et la solution à cela était:
gem install bundler
j'ai eu une erreur similaire. Voici comment j'ai résolu cela: dans votre répertoire path, Vérifiez Gemfile. Modifier la source dans le gemfile http au lieu de https et l'enregistrer. Cela pourrait installer le bundler sans la délivrance du certificat SSL.l
Pour Windows machine, vérifier votre version gem avec
gem --version
puis mettre à jour votre gemme comme suit:
- fonctionnant 1.8.x: télécharger 1.8.30
- en cours d'exécution 2.0.x: télécharger 2.0.15
- exécution 2.2.x: télécharger 2.2.3
veuillez télécharger le fichier dans un répertoire que vous pouvez plus tard, indiquez (p. ex. 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
maintenant, bundle install réussira sans erreur de vérification de certificat SSL.
instruction plus détaillée est ici
cela a fonctionné pour moi:
- https://rubygems.org/pages/download
- installez le gem avec
gem install --local [path to downloaded gem file]
- mettre à jour les gemmes avec
update_rubygems
- vérifiez que vous êtes sur la dernière version gem avec
gem --version
j'ai dû réinstaller openssl:
brew uninstall --force openssl
brew install openssl
j'ai été récemment confronté à cette question et a suivi les étapes décrites ici . Il pourrait y avoir une chance que vous ne pointez pas vers 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 bundle complet couru!
Télécharger rubygems-mise à jour-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 mise à jour.
vous pouvez maintenant désinstaller en toute sécurité rubygems-mise à jour 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 gemmes à partir d'une source sur laquelle SSL cert est fiable par une autorité de certification interne (ou vous vous connectez à une source externe via un mandataire web d'entreprise avec inspection SSL), pointez votre variable env SSL_CERT_FILE sur votre chaîne de certificats. Cela nécessite très probablement simplement l'exportation de votre certificat racine de votre magasin de certificats (Porte-Clés système sur macOS) à un endroit accessible à partir de votre shell i.e.:
export SSL_CERT_FILE=~/RootCert.pem
si vous utilisez rails-assets
si vous utilisiez https://rails-assets.org/
pour gérer vos biens, aucune réponse ne vous aidera. Même convertir en http
n'aidera pas.
la solution la plus simple est d'utiliser cette source à la place, http://insecure.rails-assets.org
. Cela a été mentionné dans leur homepage .
la seule chose qui a fonctionné pour moi sur le système Windows legacy et ruby 1.9 version est de télécharger le fichier cacert à partir http://guides.rubygems.org/ssl-certificate-update /
et ensuite exécuter la commande ci-dessous avant d'exécuter bundle install
bundle config --global ssl_ca_cert /path/to/file.pem