J’essaie d’utiliser le service Signet for OAuth to Google services. Et obtenez cette erreur:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificatee B: certificatee verify failed
Suite à ces questions:
Il semble que la solution consiste à réparer ca_path
ou à définir . VERIFY_NONE
pour SSL
Le correctif ca_path
publié ne fonctionne que sous Linux (port install) et le correctif pour VERIFY_NONE
semble être pour faraday.
Existe-t-il une solution pour Windows / Signet Gem?
En fait, la meilleure façon de résoudre ce problème dans Windows pour Ruby lui-même, pas seulement un joyau, consiste à:
Créez une nouvelle variable système:
Variable: SSL_CERT_FILE Valeur: C: \ RailsInstaller \ cacert.pem
Fermez toutes vos invites de commande, y compris l’invite de commande de votre serveur Rails, etc.
Démarrez une nouvelle invite ruby irb et essayez ce qui suit:
$irb>require 'open-uri' $irb>open('https://www.gmail.com')
Tout devrait bien fonctionner maintenant.
Solution pour Windows, que j’ai combinée à partir de quelques 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 beaucoup de certificates inutiles dans le fichier cacert.pem pour en 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 faire un if Rails.env.development?
_provider line avec la ligne client_options hash_ else
_provider sans client_options hash_ end
Après trop de recherches et de temps perdu, j’ai trouvé une solution très simple pour résoudre ce problème dans Ruby avec Windows.
Deux étapes simples:
Dans l’invite de commande, écrivez: C:\gem install certified
Dans votre fichier rb
, ajoutez: require 'certified'
C’est tout.
La mise à jour de la structure de gestion des packages rubygems a résolu ce problème pour Windows 7.
https://rubygems.org/pages/download
gem update --system # may need to be administrator or root
oui, j’ai placé 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 .
Utiliser l’URL http: // au lieu de https: // vous simplifie la vie
Changez la source de gemme sur 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, et vous téléchargerez 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, si 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 DevDude, mais en utilisant Windows Powershell:
Téléchargez http://curl.haxx.se/ca/cacert.pem dans c: \ railsinstaller \ cacert.pem
À l’invite PowerShell:
$env:SSL_CERT_FILE = 'c:\RailsInstaller\cacert.pem'
J’ai ensuite réussi à exécuter gem update
avec succès
Remarque: vous pouvez simplement définir cette variable d’environnement dans le profil notepad $profile
J’ai eu cette erreur en essayant d’installer les rails 5 sur une machine Windows, il s’avère que je devais mettre à jour la version rubygem à 2.6.7 et ensuite cela a fonctionné.
step 1 download rubygem d’en bas
https://rubygems.org/downloads/rubygems-update-2.6.7.gem
étape 2 – installer en pointant sur les rubygems téléchargés
gem install --local C:\rubygems-update-2.6.7.gem
étape 3 – cochez la nouvelle version 2.6.7
gem --version
étape 4 – Désinstallez maintenant en toute sécurité la gem de rubygems-update
gem uninstall rubygems-update -x
l’étape 5 a tenté d’installer à nouveau les rails 5
gem install rails --version 5.0.0
travaillé comme un charme!
J’ai obtenu des informations sur: http://guides.rubygems.org/ssl-certificatee-update/#installing-using-update-packages
J’ai pu éliminer le paramètre PATH ou SYSTEM VARIABLE mentionné ci-dessus en important le certificate en tant qu’autorité de confiance.
Je crois que la bonne réponse est de mettre à jour votre installateur de gem: rubygems-update . L’explication de la raison pour laquelle cela est nécessaire se trouve à: Ssl Certificate Updates
Enregistrez votre fichier cacert.pmp à partir de https://curl.haxx.se/ca/cacert.pem , puis ajoutez ce fichier à l’emplacement yourruby-folder \ lib \ ruby \ 2.3.0 \ rubygems \ ssl_certs
par exemple: C: \ Ruby23 \ lib \ ruby \ 2.3.0 \ rubygems \ ssl_certs
Cela m’a aidé: https://coderwall.com/p/ubl6iw/fix-ssl_connect-returned-1-errno-0-state-sslv3-read-server-certificatee-b-certificatee-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 certificate 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.
J’étais également confronté à ce problème lorsque j’ai installé d’anciennes versions de Ruby. Lorsque j’ai installé la dernière version de Ruby, ce problème a disparu. Donc, fondamentalement, le certificate SSL devait être mis à jour.
Pour les personnes qui utilisent des rails 4.
Ajoutez ceci dans devise.rb
require "omniauth-google-oauth2" config.omniauth :google_oauth2, "CLIENT_ID", "CLIENT_SECRET", { access_type: "offline", approval_prompt: "", :client_options => {:ssl => {:verify => false}} }