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?

256
demandé sur mrzasa 2012-04-20 16:13:06

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"

306
répondu Will 2017-05-23 11:55:02

remplacer la source de gem ssl par une solution non-ssl temporaire:

221
répondu StuR 2013-08-08 15:28:36

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 .

161
répondu Alexander.Iljushkin 2016-11-02 13:29:43

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
113
répondu chaserx 2013-10-02 18:03:08

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

55
répondu fbernier 2013-10-16 17:22:14

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

49
répondu asfallows 2012-04-20 17:03:09

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 par votre propre nom d'utilisateur.

16
répondu peter 2014-03-21 18:17:36

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

  1. mise à Jour de rubygems: gem update --system
  2. utiliser RVM pour rafraîchir les certs SSL: rvm osx-ssl-certs update all

astuce Chapeau à cette astuce sur la RailsApps projet !

15
répondu Alan H. 2013-10-22 03:50:02

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é.

7
répondu danielrussia 2012-04-28 12:02:06

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
6
répondu Roffers 2016-10-20 12:25:37

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 )

5
répondu arcanex 2013-10-18 05:36:20

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.

5
répondu geniushkg 2015-05-03 16:11:46

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

4
répondu Ludwig 2012-04-20 15:16:54

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

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

4
répondu bkdir 2016-05-09 04:58:56

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.

3
répondu Jo Liss 2012-05-03 17:47:43

la solution la plus simple:

rvm pkg install openssl
rvm reinstall all --force

voilà!

3
répondu user2886774 2013-10-16 14:57:10

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
3
répondu Schrockwell 2016-10-18 19:20:12

mon fixe permanent pour Windows:

  1. Télécharger "le 151990920" CACert , enregistrer sous C:\ruby\ssl_certs\GlobalSignRootCA.pem à partir de http://guides.rubygems.org/ssl-certificate-update/

  2. crée la variable système nommée " SSL_CERT_FILE ", définie à C:\ruby\ssl_certs\GlobalSignRootCA.pem .

  3. 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
3
répondu Dio Phung 2016-10-19 18:47:23

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

3
répondu Sebastian Ax 2016-12-18 19:48:18

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

2
répondu ecksor5 2014-03-24 17:53:49

Pour Windows machine, vérifier votre version gem avec

gem --version

puis mettre à jour votre gemme comme suit:

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

2
répondu KBIIX 2016-06-17 00:11:43

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
1
répondu Guy Chauliac 2016-10-12 20:08:13

j'ai dû réinstaller openssl:

brew uninstall --force openssl
brew install openssl
1
répondu gabeodess 2016-11-04 19:37:49

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!

1
répondu jshaf 2017-01-05 07:30:02

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
1
répondu Aswathy 2017-01-11 07:24:20

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
0
répondu mostlikelee 2017-03-07 13:40:40

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 .

0
répondu Anwar 2017-04-30 10:52:22

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
0
répondu Aleksandar Pavić 2017-08-18 07:39:47