web-dev-qa-db-fra.com

Echec de l'installation du paquet avec erreur de vérification du certificat SSL

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?

261
mrzasa

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

308
Will

Remplacez le code source ssl par un non-ssl en tant que solution temporaire:

224
StuR

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.

161
Alexander.Iljushkin

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
115
chaserx

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

55
fbernier

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

50
asfallows

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.

17
peter

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

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

Astuce de chapeau à cette astuce sur le projet RailsApps !

15
Alan H.

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

7
danielrussia

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 )

7
arcanex

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
6
Roffers

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.

5
geniushkg

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

https://Gist.github.com/fnichol/86755

4
bkdir

La solution la plus simple:

rvm pkg install openssl
rvm reinstall all --force

Voila!

4
user2886774

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

4
Ludwig

Mon correctif permanent pour Windows:

  1. Téléchargez le CACert , enregistrez sous C:\Ruby\ssl_certs\GlobalSignRootCA.pem depuis http://guides.rubygems.org/ssl-certificate-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
3
Dio Phung

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

3
Sebastian Ax

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.

3
Jo Liss

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
3
Schrockwell

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

2
ecksor5

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

2
KBIIX

Cela a fonctionné pour moi:

  • téléchargez la dernière pierre sur https://rubygems.org/pages/download
  • installer la gemme 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 de gem avec gem --version
1
Guy Chauliac

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!

1
jshaf

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
1
Aswathy

J'ai dû réinstaller openssl:

brew uninstall --force openssl
brew install openssl
1
gabeodess

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
0
mostlikelee

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
0
Aleksandar Pavić

Si vous utilisez 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 .

0
Anwar