J'utilise Authlogic-Connect pour les connexions tierces. Après avoir exécuté 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 certificate B: certificate verify failed
Le journal des développeurs affiche
OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed):
app/controllers/users_controller.rb:37:in `update'
Veuillez suggérer..
Réponses:
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:
Obtenez le bundle CURL Certificate Authority (CA). Vous pouvez le faire avec:
sudo port install curl-ca-bundle
[si vous utilisez MacPorts]wget http://curl.haxx.se/ca/cacert.pem
Exécutez le code Ruby qui tente de vérifier la certification SSL:
SSL_CERT_FILE=/opt/local/etc/certs/cacert.pem rails generate jquery:install
. Dans votre cas, vous voulez soit la définir comme variable d'environnement quelque part où le serveur la récupère, soit ajouter quelque chose commeENV['SSL_CERT_FILE'] = /path/to/your/new/cacert.pem
dans votre fichier environment.rb.Vous pouvez également 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 n'ai pas essayé cela personnellement.
Fondamentalement, le problème que vous rencontrez est qu'un service Web répond avec un certificat signé contre une autorité de certification qu'OpenSSL ne peut pas vérifier.
la source
export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cert.pem
sudo curl http://curl.haxx.se/ca/cacert.pem >> /usr/local/etc/cacert.pem
suivi deexport SSL_CERT_FILE=/usr/local/etc/cacert.pem
SSL_CERT_FILE=/usr/local/etc/openssl/cert.pem
au.env
fichier de mon application et le tour est joué - tout est heureux.Si vous utilisez RVM sur OS X, vous devrez probablement exécuter ceci:
Plus d'informations ici: http://rvm.io/support/fixing-broken-ssl-certificates
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 à partir de la source pour résoudre ce problème. Voici comment (remplacer
2.2.3
par votre version Ruby):Nous remercions https://stackoverflow.com/a/32363597/4353 et Ian Connor .
la source
rvm reinstall 2.2.0 --disable-binary
mais vous devez regrouper l'installation et recommencer à zéro.Voici comment vous pouvez le corriger sous Windows: https://gist.github.com/867550 (créé par Fletcher Nichol)
Extrait:
la source
Ruby ne trouve aucun certificat racine auquel faire confiance.
Jetez un oeil à ce billet de blog pour une solution: " Ruby 1.9 et l'erreur SSL ".
la source
La raison pour laquelle vous obtenez cette erreur sur OSX est le rubis installé par rvm.
Si vous rencontrez ce problème sur OSX, vous pouvez en trouver une explication très large dans cet article de blog:
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 binaires précompilés, qui recherchent des certificats au mauvais endroit. En forçant RVM à télécharger la source et à compiler sur votre propre machine, vous vous assurez que la configuration de l'emplacement du certificat est correcte.
La commande pour ce faire est:
si vous avez déjà la version en question, vous pouvez la réinstaller avec:
(évidemment, remplacez votre version rubis si nécessaire).
la source
\curl -sSL https://get.rvm.io | bash -s stable --autolibs=homebrew
puisrvm install <ruby-version> --disable-binary
à un moment donné, j'ai également faitrvm get head
car ce sont des problèmes de pointe.SSL_CERT_FILE
. Aprèsrvm install 2.2.0 --disable-binary
, le problème a été réglé.Le problème est que ruby ne trouve pas de certificat racine de confiance. À partir de 1.9 rubis vérifie cela. Vous devrez vous assurer que vous disposez du certificat curl sur votre système sous la forme d'un fichier pem. Vous devrez également vous assurer que le certificat se trouve à l'emplacement auquel ruby s'attend. Vous pouvez obtenir ce certificat à ...
Si vous êtes un utilisateur RVM et OSX, l'emplacement de votre fichier de certificat variera en fonction de la version de ruby que vous utilisez. La définition explicite du chemin avec: ca_path est une mauvaise idée car votre code ne sera pas portable lorsqu'il arrivera en production. Là, vous voulez fournir à ruby un certificat à l'emplacement par défaut (et supposez que vos gars de développement savent ce qu'ils font). Vous pouvez utiliser dtruss pour déterminer où le système recherche le fichier de certificat.
Dans mon cas, le système recherchait le fichier CERT dans
cependant le système MACOSX s'attendrait à un certificat
J'ai copié le certificat téléchargé sur ce chemin et cela a fonctionné. HTH
la source
~/.rvm/usr/ssl/cert.pem
cacert.pem
OS X. OS X ne l'utilise pascacert.pem
. Les certificats système et utilisateur sont stockés dans KeyChain. Ruby devrait s'intégrer à KeyChain sur OS X.Le nouveau bijou certifié est conçu pour résoudre ce problème:
https://github.com/stevegraham/certified
la source
bundle
explicitement ajoutérequire "certified"
juste pour être sûr, et rien ne change. Qu'est-ce que je rate?cacert.pem
OS X. OS X ne l'utilise pascacert.pem
. Les certificats système et utilisateur sont stockés dans KeyChain. Ruby devrait s'intégrer à KeyChain sur OS X. OpenSSL n'a jamais distribué acacert.pem
. Ce n'est pas clair pour moi pourquoi un logiciel s'en remettrait à OpenSSL.Ajoutez simplement gem 'certifié' dans votre gemfile et exécutez l'installation du bundle.
la source
Sur Mac OS X Lion avec le dernier macport:
Ensuite, réexécutez le travail ayant échoué.
Remarque, l'emplacement du fichier cert semble avoir changé depuis la réponse d'Eric G le 12 mai.
la source
export SSL_CERT_FILE=/usr/local/etc/openssl/cacert.pem
à votre fichierUn one liner le corrige pour Windows dans une invite d'administration
choco install wget
(voir d'abord chocolatey.org )Ou faites simplement ceci:
La méthode de Milanio:
la source
Eh bien, cela a fonctionné pour moi
Quelque chose ne va pas avec la mise en œuvre d'OpenSL de mon Ubuntu 12.04
la source
curl -O http://curl.haxx.se/ca/cacert.pem
,mv cacert.pem cert.pem
,mv cert.pem $rvm_path/usr/ssl
Tout en sachant que c'est une solution plutôt boiteuse, je partage toujours cela car il semble que très peu de personnes qui répondent ici utilisent Windows , et je pense que certains utilisateurs de Windows (moi y compris) apprécieraient une approche simple et intuitive.
Cela indique où votre openssl recherche le fichier cert. Mon nom n'est pas Luis, mais le mien l'é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 chaque environnement (par exempleopenknapsack
au lieu deluislavena
).Le chemin n'a pas changé même après
set SSL_CERT_FILE=C:\foo\bar\baz\cert.pem
via la console, alors ... J'ai créé le répertoireC:\Users\Luis\Code\luislavena\knap-build\var\knapsack\software\x86-windows\openssl\1.0.0l\ssl
sur mon disque local et y ai mis un fichier cert.Aussi boiteux soit-il, cela fonctionnera sûrement.
la source
J'ai essayé d'installer
curl-ca-bundle
avecbrew
, mais le package n'est plus disponible:La solution qui m'a fonctionné sur Mac était:
Ajoutez cette ligne dans votre
~/.bash_profile
(ou~/.zshrc
pour zsh):Mettez ensuite à jour votre terminal:
la source
export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem
~/.bash_profile
, il laisse un rappel de ce qui a été ajouté (et, surtout, où) lorsque des mises à jour supplémentaires sont nécessaires.Voici une autre option à des fins de débogage.
Assurez-vous de ne jamais l'utiliser dans un environnement de production, car cela annulera les avantages de l'utilisation de SSL en premier lieu. Cela n'est valable que dans votre environnement de développement local.
la source
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:
source: https://gist.github.com/fnichol/867550
la source
La réponse la plus simple qui a fonctionné pour moi était la suivante:
Et le tour est joué !!!
la source
OS X 10.8.x avec Homebrew:
la source
Ensuite, comme le suggère ce billet de blog,
" Comment guérir Net :: Comportement HTTPS par défaut risqué de HTTP "
vous souhaiterez peut-être installer la
always_verify_ssl_certificates
gemme qui vous permettra de définir une valeur par défaut pourca_file
.la source
Cela a fonctionné pour moi. Si vous utilisez rvm et brew:
la source
J'ai rencontré ce problème et le correctif suggéré de
rvm osx-ssl-certs update all
n'a pas fonctionné malgré le fait que je suis un utilisateur RVM sur OSX.Le correctif qui a fonctionné pour moi consistait à réinstaller la dernière version de openssl:
la source
J'ai résolu ce problème en exécutant cela dans le terminal. La rédaction complète est disponible ici
la source
Solution OSX:
installer la dernière version stable de rvm
utiliser la commande rvm pour résoudre les certificats automatiquement
la source
Si vous exécutez votre application rails localement, ajoutez simplement cette ligne au bas de application.rb.
Après cela, vous pouvez utiliser l'application sans aucun problème. Vous pouvez appeler cela un hack mais ce n'est pas recommandé. Utiliser uniquement lorsque vous devez exécuter localement
la source
Voici ce que j'ai fait pour vous aider si vous rencontrez spécifiquement un problème avec Leopard.
Mon certificat était ancien et devait être mis à jour. J'ai téléchargé ceci:
http://curl.haxx.se/ca/cacert.pem
Puis remplacé mon certificat qui a été trouvé ici sur Leopard:
Rechargez tout ce que vous avez qui y accède et vous devriez être prêt à partir!
la source
Juste parce que les instructions étaient légèrement différentes pour ce qui a fonctionné pour moi, j'ai pensé ajouter mes 2 cents:
Je suis sur OS X Lion et j'utilise macports et rvm
J'ai installé curl-ca-bundle:
Ensuite, j'ai ajusté ma configuration omniauth comme suit:
la source
ca-bundle.crt
) et utiliser Google Internet Authority G2 dans:ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"}
. C'est le seul nécessaire pour certifier les connexions à Google.Si vous avez un lien symbolique dans / usr / local / etc / openssl pointant vers cert.pem, essayez de faire ceci:
la source
Ce qui a fonctionné pour moi est une combinaison de réponses, à savoir:
la source
J'ai eu des problèmes pendant plusieurs jours et je piratais. Ce lien s'est avéré extrêmement utile pour moi. Cela m'a aidé à faire une mise à niveau réussie de SSL sur MAC OS X 9.
la source
Parfois, ce n'est pas toujours le problème de rvm dans MAC OSX, si vous supprimez .rvm, le problème persiste (en particulier lorsque vous sauvegardez les données de timemachine), vous pouvez essayer de cette façon.
la source
L'ajout
gem 'certified', '~> 1.0'
à monGemfile
et l'exécution abundle
résolu ce problème pour moi.la source