Comment résoudre le problème de vérification de certificate sur Windows?

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:

  • SSL_connect a renvoyé = 1 erreur = 0 état = certificate de serveur de lecture SSLv3 B: vérification de certificate a échoué
  • OmniAuth & Facebook: la vérification du certificate a échoué

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 à:

  1. Téléchargez https://curl.haxx.se/ca/cacert.pem dans c: \ railsinstaller \ cacert.pem. Assurez-vous de l’enregistrer en tant que fichier .pem plutôt que dans un fichier texte.
  2. Accédez à votre ordinateur -> Paramètres avancés -> Variables d’environnement
  3. Créez une nouvelle variable système:

    Variable: SSL_CERT_FILE Valeur: C: \ RailsInstaller \ cacert.pem

  4. Fermez toutes vos invites de commande, y compris l’invite de commande de votre serveur Rails, etc.

  5. 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:

  1. Téléchargez https://curl.haxx.se/ca/cacert.pem et placez-le dans YOUR_APP / lib / assets (ou ailleurs)
  2. 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 
  3. É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:

  1. Dans l’invite de commande, écrivez: C:\gem install certified

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

  1. Invoquer certmgr.msc
  2. Cliquez avec le bouton droit sur le dossier Autorité de certificateion racine de confiance.
  3. Sélectionnez “Toutes les tâches”
  4. Sélectionnez “Importer”
  5. Sélectionnez Tous les fichiers dans la liste déroulante de type de fichier et sélectionnez le fichier cacert.pem.
  6. Vous devriez recevoir un message “Import Successful”

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}} }