J'essaie d'utiliser le sceau OAuth pour les services Google. Et obtenez cette erreur:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Suite à ces questions:
Il semble que la solution soit de corriger ca_path
ou de définir .VERIFY_NONE
pour SSL
Le correctif ca_path
publié ne fonctionne que sous Linux (installation par port) et le correctif pour VERIFY_NONE
semble être pour faraday.
Existe-t-il une solution pour Windows/joyau de chevalet?
En fait, le meilleur moyen que j'ai trouvé de résoudre ce problème dans les fenêtres de Ruby lui-même, et pas seulement d'un joyau, est de procéder comme suit:
Créer une nouvelle variable système:
Variable: SSL_CERT_FILE Valeur: C:\RailsInstaller\cacert.pem
Fermez toutes vos invites, y compris votre invite de commande du serveur Rails, etc.
Démarrez une nouvelle invite Ruby irb et essayez les solutions suivantes:
$irb>require 'open-uri'
$irb>open('https://www.gmail.com')
Tout devrait bien fonctionner maintenant.
Solution pour Windows, que j'ai concoctée à partir de plusieurs réponses différentes:
Dans config/initializers/omniauth.rb:
#config/initializers/omniauth.rb Rails.application.config.middleware.use OmniAuth::Builder do provider :facebook, CUSTOMER_KEY, CUSTOMER_SECRET, {client_options: {ssl: {ca_file: Rails.root.join('lib/assets/cacert.pem').to_s}}} end
Évidemment, redémarrez votre serveur.
Notes de bas de page: Vous pourrez peut-être supprimer un grand nombre de certificats inutiles dans le fichier cacert.pem afin de réduire la taille. Si vous n’avez besoin que de cette solution pour le développement, vous pouvez enregistrer le fichier en dehors de votre projet et créer une ligne if Rails.env.development?
_provider avec la valeur client_options hash_ else
_provider sans client_options hash_ end
.
Après trop de recherches et de perte de temps, j'ai trouvé une solution très simple pour résoudre ce problème dans Ruby avec Windows.
Deux étapes simples:
Dans la commande Invite write: C:\gem install certified
Dans votre fichier rb
, ajoutez: require 'certified'
C'est tout.
La mise à jour de la structure de gestion de paquets rubygems a résolu ce problème sous Windows 7.
https://rubygems.org/pages/download
gem update --system # may need to be administrator or root
oui, j'ai défini le fichier omniouth.rb dans le dossier des initialiseurs à ceci:
provider :facebook, FACEBOOK_KEY, FACEBOOK_SECRET, {:client_options => {:ssl => {:verify => false}}}
et cela semble bien fonctionner maintenant. Mais ne l'utilisez pas pour la production .
L'utilisation de l'URL http: // au lieu de https: // vous facilite la tâche
Changez la source de gem en http://rubygems.org/ en utilisant la ligne de commande suivante sur votre ligne de commande Ruby
gem sources -a http://rubygems.org/
Accédez à la page de téléchargement de rubygems-update: https://rubygems.org/gems/rubygems-update
Cliquez sur le lien Télécharger pour télécharger un fichier appelé rubygems-update-2.6.7.gem. Sur la ligne de commande, accédez au répertoire dans lequel vous avez téléchargé le fichier .gem et tapez:
gem install rubygems-update-2.6.7.gem
(ou quel que soit le nom du fichier, s'il s'agit d'une version plus récente)
Puis tapez:
update_rubygems
Vous pouvez vérifier qu'il est mis à jour avec:
gem --version
Ajout sur la solution de DevDude, mais en utilisant Windows Powershell:
Télécharger http://curl.haxx.se/ca/cacert.pem dans c:\railsinstaller\cacert.pem
À l'invite de PowerShell:
$env:SSL_CERT_FILE = 'c:\RailsInstaller\cacert.pem'
J'ai ensuite pu exécuter gem update
avec succès
Remarque: vous pouvez simplement définir cette variable d'environnement dans votre profil notepad $profile
J'ai eu cette erreur en essayant de configurer Rails 5 sur une machine Windows, il s'est avéré que je devais mettre à jour la version de Rubygem vers la version 2.6.7, puis cela a fonctionné.
étape 1 télécharger rubygem par le bas
https://rubygems.org/downloads/rubygems-update-2.6.7.gem
étape 2 - installe en pointant sur rubygems téléchargé
gem install --local C:\rubygems-update-2.6.7.gem
étape 3 - vérifie que la nouvelle version est 2.6.7
gem --version
étape 4 - Désinstallez maintenant rubygems-update gem en toute sécurité
gem uninstall rubygems-update -x
l'étape 5 a essayé d'installer Rails 5 à nouveau
gem install Rails --version 5.0.0
travaillé comme un charme!
J'ai eu des informations de: http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages
Je faisais également face à ce problème lorsque j'ai installé les anciennes versions de Ruby. Lorsque j'ai installé la dernière version de Ruby, ce problème a disparu. Donc, fondamentalement, le certificat SSL devait être mis à jour.
Je crois que la bonne réponse est de mettre à jour votre installateur gem: rubygems-update . L’explication de cette nécessité se trouve à l’adresse: Mises à jour des certificats Ssl
Cela m'a aidé: https://coderwall.com/p/ubl6iw/fix-ssl_connect-returned-1-errno-0-state-sslv3-read-server-certificate-b-certificate-verify-failed -openssl-ssl-sslerror Mon projet Ruby on Rails envoie des données à une API en interne et ne peut pas vérifier le certificat interne. Ces lignes ont aidé:
require 'https'
http = Net::HTTP.new('example.com', 443)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.cert_store = OpenSSL::X509::Store.new
http.cert_store.set_default_paths
http.cert_store.add_file('/path/to/internal.cert.pem')
J'espère que cela peut aider.
enregistrez votre fichier cacert.pmp à partir de https://curl.haxx.se/ca/cacert.pem puis ajoutez ce fichier à l’emplacement de votre dossier d’installation\lib\Ruby\2.3.0\rubygems\ssl_certs
par exemple: C:\Ruby23\lib\Ruby\2.3.0\rubygems\ssl_certs
J'ai pu éliminer le paramètre PATH ou SYSTEM VARIABLE mentionné ci-dessus en important le certificat en tant qu'autorité de confiance.