SSL_connect a renvoyé = 1 erreur = 0 état = certificate de serveur de lecture SSLv3 B: vérification de certificate a échoué

J’utilise Authlogic-Connect pour les connexions tierces. Après avoir effectué les migrations appropriées, les connexions Twitter / Google / yahoo semblent fonctionner correctement, mais la connexion facebook génère une exception:

SSL_connect returned=1 errno=0 state=SSLv3 read server certificatee B: certificatee verify failed 

Le journal de développement montre

 OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificatee B: certificatee verify failed): app/controllers/users_controller.rb:37:in `update' 

Veuillez suggérer..

J’ai rencontré un problème similaire en essayant d’utiliser le générateur JQuery pour Rails 3

Je l’ai résolu comme ceci:

  1. Obtenez le bundle CURL Certificate Authority (CA). Vous pouvez le faire avec:

    • sudo port install curl-ca-bundle [si vous utilisez MacPorts]
    • ou tout simplement le descendre directement wget http://curl.haxx.se/ca/cacert.pem
  2. Exécutez le code ruby ​​qui tente de vérifier la certificateion SSL: SSL_CERT_FILE=/opt/local/etc/certs/cacert.pem rails generate jquery:install . Dans votre cas, vous voulez soit définir cette variable comme un environnement que le serveur récupère, soit append quelque chose comme ENV['SSL_CERT_FILE'] = /path/to/your/new/cacert.pem dans votre fichier environment.rb.

Vous pouvez aussi simplement installer les fichiers CA (je n’ai pas essayé) sur le système d’exploitation – il y a de longues instructions ici – cela devrait fonctionner de la même manière, mais je ne l’ai pas essayé personnellement.

Fondamentalement, le problème que vous rencontrez est que certains services Web répondent par un certificate signé par une autorité de certificateion qu’OpenSSL ne peut pas vérifier.

Si vous utilisez RVM sous OS X, vous devez probablement exécuter ceci:

 rvm osx-ssl-certs update all 

Plus d’informations ici: http://rvm.io/support/fixing-broken-ssl-certificatees

Et voici l’explication complète: https://github.com/wayneeseguin/rvm/blob/master/help/osx-ssl-certs.md


Mettre à jour

Sur Ruby 2.2, vous devrez peut-être réinstaller Ruby depuis la source pour y remédier. Voici comment (remplacez 2.2.3 par votre version Ruby):

 rvm reinstall 2.2.3 --disable-binary 

Crédit à https://stackoverflow.com/a/32363597/4353 et Ian Connor .

Voici comment vous pouvez le réparer sur Windows: https://gist.github.com/867550 (créé par Fletcher Nichol)

Extrait:

La manière manuelle (ennuyeuse)

Téléchargez le fichier cacert.pem à partir de http://curl.haxx.se/ca/cacert.pem . Enregistrez ce fichier dans C:\RailsInstaller\cacert.pem .

Maintenant, SSL_CERT_FILE de votre bundle d’autorité de certificateion en définissant SSL_CERT_FILE . Pour définir ceci dans votre session d’invite de commande en cours, tapez:

 set SSL_CERT_FILE=C:\RailsInstaller\cacert.pem 

Pour que cela devienne un paramètre permanent, ajoutez-le dans votre panneau de configuration .

Ruby ne trouve aucun certificate racine de confiance.

Jetez un coup d’oeil à cet article pour une solution: ” Ruby 1.9 et l’erreur SSL “.

La solution consiste à installer le port curl-ca-bundle contenant les mêmes certificates racine que Firefox:

 sudo port install curl-ca-bundle 

et dites à votre object https de l’utiliser:

 https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt' 

Notez que si vous souhaitez que votre code s’exécute sur Ubuntu, vous devez définir l’atsortingbut ca_path place, avec l’emplacement par défaut des certificates /etc/ssl/certs .

La raison pour laquelle vous obtenez cette erreur sur OSX est la ruby ​​installée sur rvm.

Si vous rencontrez ce problème sous OSX, vous pouvez en trouver une explication très complète dans cet article:

http://toadle.me/2015/04/16/fixing-failing-ssl-verification-with-rvm.html

La version courte est que, pour certaines versions de Ruby, RVM télécharge des fichiers binarys pré-compilés, qui recherchent des certificates au mauvais endroit. En forçant RVM à télécharger la source et à comstackr sur votre propre machine, vous vous assurez que la configuration de l’emplacement du certificate est correcte.

La commande à faire est la suivante:

 rvm install 2.2.0 --disable-binary 

Si vous avez déjà la version en question, vous pouvez la réinstaller avec:

 rvm reinstall 2.2.0 --disable-binary 

(évidemment, remplacez votre version ruby ​​au besoin).

Le problème est que ruby ​​ne peut pas trouver un certificate racine de confiance. À partir de 1.9 rbuy vérifie ceci. Vous devrez vous assurer que vous avez le certificate curl sur votre système sous la forme d’un fichier pem. Vous devrez également vous assurer que le certificate se trouve à l’emplacement que Ruby attend de lui. Vous pouvez obtenir ce certificate à …

 http://curl.haxx.se/ca/cacert.pem 

Si vous êtes un utilisateur RVM et OSX, l’emplacement de votre fichier de certificate variera en fonction de votre version de ruby. Définir explicitement le chemin avec: ca_path est une mauvaise idée car votre code ne sera pas portable lorsqu’il sera en production. Pour cela, vous voulez fournir à ruby ​​un certificate dans l’emplacement par défaut (et supposez que vos développeurs savent ce qu’ils font). Vous pouvez utiliser dtruss pour déterminer où le système recherche le fichier de certificate.

Dans mon cas, le système cherchait le fichier cert dans

 /Users/stewart.matheson/.rvm/usr/ssl/cert.pem 

Cependant, le système MACOSX attend un certificate

 /System/Library/OpenSSL/cert.pem 

J’ai copié le certificate téléchargé sur ce chemin et cela a fonctionné. HTH

Le nouveau bijou certifié est conçu pour résoudre ce problème:

https://github.com/stevegraham/certified

Sur Mac OS X Lion avec le dernier macport:

 sudo port install curl-ca-bundle export SSL_CERT_FILE=/opt/local/share/curl/curl-ca-bundle.crt 

Ensuite, réexécutez le travail ayant échoué.

Notez que l’emplacement du fichier cert semble avoir changé depuis que Eric G a répondu le 12 mai.

Ajoutez simplement la gem ‘certifiée’ dans votre fichier gemfile et exécutez l’installation du bundle.

  1. gem ‘ certifié
  2. installation groupée

Une ligne fixe le corrige pour Windows dans une invite d’administration

choco install wget (d’abord voir chocolatey.org )

 wget http://curl.haxx.se/ca/cacert.pem -OC:\cacert.pem && setx /M SSL_CERT_FILE "C:\cacert.pem" 

Ou faites simplement ceci:

 gem sources -r https://rubygems.org/ gem sources -a http://rubygems.org/ 

La méthode de Milanio:

 gem sources -r https://rubygems.org gem sources -a http://rubygems.org gem update --system gem sources -r http://rubygems.org gem sources -a https://rubygems.org gem install [NAME_OF_GEM] 

Eh bien cela a fonctionné pour moi

 rvm pkg install openssl rvm reinstall 1.9.2 --with-openssl-dir=$rvm_path/usr 

Quelque chose ne va pas avec l’implémentation openssl de mon ubuntu 12.04

J’ai essayé d’installer curl-ca-bundle avec brew , mais le package n’est plus disponible:

 $ brew install curl-ca-bundle Error: No available formula for curl-ca-bundle Searching formulae... Searching taps... 

La solution qui me convenait sur Mac était:

  $ cd /usr/local/etc/openssl/certs/ $ sudo curl -O http://curl.haxx.se/ca/cacert.pem 

Ajoutez cette ligne dans votre ~/.bash_profile (ou ~/.zshrc pour zsh):

 export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem 

Ensuite, mettez à jour votre terminal:

 $ source ~/.bash_profile 

Voici une autre option à des fins de débogage.

Veillez à ne jamais l’utiliser dans un environnement de production, car cela annulera les avantages liés à l’utilisation de SSL en premier lieu. Cela n’est valable que pour cela dans votre environnement de développement local.

 require 'openssl' OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE 

Tout en sachant qu’il s’agit plutôt d’une solution boiteuse, je le partage toujours car il semble que très peu de personnes répondant à cette question utilisent Windows , et je pense que certains utilisateurs de Windows (moi inclus) apprécieraient une approche simple et intuitive.

 require 'openssl' puts OpenSSL::X509::DEFAULT_CERT_FILE 

Cela indique où votre openssl recherche le fichier cert. Mon nom n’est pas Luis, mais le mien était C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0l/ssl/cert.pem . Le chemin peut être différent selon les environnements (par exemple openknapsack au lieu de luislavena ).

Le chemin n’a pas changé même après avoir set SSL_CERT_FILE=C:\foo\bar\baz\cert.pem via la console, alors … j’ai créé le répertoire C:\Users\Luis\Code\luislavena\knap-build\var\knapsack\software\x86-windows\openssl\1.0.0l\ssl sur mon disque local et y place un fichier cert.

Lame comme ça, ça marchera sûrement.

J’ai eu ce même problème en travaillant sur un projet Ruby. J’utilise Windows 7 64 bits.

J’ai résolu ce problème en:

  1. Téléchargement du fichier cacert.pem à partir de http://curl.haxx.se/ca/cacert.pem .
  2. Enregistré ce fichier dans C: /RubyCertificates/cacert.pem
  3. Ensuite, définissez ma variable d’environnement “SSL_CERT_FILE” sur “C: \ RubyCertificates \ cacert.pem”

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

La réponse la plus simple qui a fonctionné pour moi était la suivante:

 sudo apt-get install openssl ca-certificatees 

Et le tour est joué !!!

OS X 10.8.x avec Homebrew:

 brew install curl-ca-bundle brew list curl-ca-bundle cp /usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt /usr/local/etc/openssl/cert.pem 

Alors, comme le suggère cet article de blog,

” Comment traiter le comportement HTTPS par défaut de Net :: HTTP ”

vous pouvez installer la gem de always_verify_ssl_certificatees qui vous permet de définir une valeur par défaut pour ca_file .

Cela a fonctionné pour moi. Si vous utilisez rvm et armser:

 rvm remove 1.9.3 brew install openssl rvm install 1.9.3 --with-openssl-dir=`brew --prefix openssl` 

J’ai rencontré ce problème et le correctif suggéré pour la mise à jour de rvm osx-ssl-certs update all ne fonctionnait pas malgré que je sois un utilisateur RVM sur OSX.

Le correctif qui fonctionnait pour moi était de réinstaller la dernière version de openssl:

 brew update brew remove openssl brew install openssl 

J’ai résolu ce problème en exécutant ce terminal. La rédaction complète est disponible ici

 rvm install 2.2.0 --disable-binary 

Solution OSX:

installer la dernière version stable de rvm

 rvm get stable 

utiliser la commande rvm pour résoudre les certificates automatiquement

 rvm osx-ssl-certs update all 

Voici ce que j’ai fait qui a aidé si vous avez spécifiquement un problème sur Leopard.

Mon certificate était ancien et devait être mis à jour. J’ai téléchargé ceci:

http://curl.haxx.se/ca/cacert.pem

Ensuite, j’ai remplacé mon certificate qui a été trouvé ici sur Leopard:

 /usr/share/curl/curl-ca-bundle.crt 

Rechargez tout ce que vous avez qui y accède et vous devriez être prêt à partir!

Juste parce que les instructions étaient un peu différentes pour ce qui fonctionnait pour moi, je pensais append mes 2 cents:

Je suis sur OS X Lion et j’utilise les macports et les rvm

J’ai installé curl-ca-bundle:

 sudo port install curl-ca-bundle 

Ensuite, j’ai ajusté ma configuration omniauth pour qu’elle soit la suivante:

 Rails.application.config.middleware.use OmniAuth::Builder do provider :google_oauth2, APP_CONFIG['CONSUMER_KEY'], APP_CONFIG['CONSUMER_SECRET'], :scope => 'https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.profile', :ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"} end 

Si vous avez un lien symbolique dans / usr / local / etc / openssl pointant vers cert.pem, essayez de faire ceci:

 ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE" (should be /usr/local/etc/openssl) cd /usr/local/etc/openssl wget http://curl.haxx.se/ca/cacert.pem ln -s cacert.pem 77ee3751.0 (77ee3751.0 is my symbolic link, should depend on the openssl version) 

Si vous exécutez localement votre application rails, ajoutez simplement cette ligne au bas de l’application.rb.

 OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE 

Après cela, vous pouvez utiliser l’application sans aucun problème. Vous pouvez appeler cela un hack mais ce n’est pas recommandé. Utilisez uniquement lorsque vous devez exécuter localement

J’ai eu des problèmes pendant un certain nombre de jours et je faisais du piratage. Ce lien s’est avéré extrêmement utile pour moi. Cela m’a aidé à faire une mise à jour réussie de SSL sur MAC OS X 9.

L’ajout de gem 'certified', '~> 1.0' à mon Gemfile et à mon Gemfile cours d’exécution a résolu ce problème pour moi.

Lancez simplement l’exécutable de certified-update et cette commande s’assurera que tous vos certificates sont à jour.

Cela a fonctionné pour mon application Ruby on Rails dans Windows.

J’ai dû réinstaller Ruby. Cela devrait le résoudre si vous utilisez Ubuntu & rbenv:

 rbenv uninstall your_version # install dependencies sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev # install ruby with patch curl -fsSL https://gist.github.com/mislav/055441129184a1512bb5.txt | \ rbenv install --patch your_version 

Pour plus d’informations, consultez le wiki Rbenv sur le sujet.