web-dev-qa-db-fra.com

Comment résoudre le problème "vérification du certificat a échoué" sous Windows?

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?

72
mbdev

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:

  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 qu'en fichier texte. 
  2. Allez sur votre ordinateur -> Paramètres avancés -> Variables d'environnement
  3. Créer une nouvelle variable système: 

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

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

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

186
DevDude

Solution pour Windows, que j'ai concoctée à partir de plusieurs réponses différentes:

  1. Téléchargez https://curl.haxx.se/ca/cacert.pem et mettez-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 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.

27
Arcolye

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:

  1. Dans la commande Invite write: C:\gem install certified

  2. Dans votre fichier rb, ajoutez: require 'certified'

C'est tout.

20

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
9
Aaron Robertson

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 .

8
Tom

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/
5
nifCody

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

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

1
df2k2

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

1
Kingsley Ijomah

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.

0
kishor.j

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

0
FatherShawn

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

0
nikbe28

J'ai pu éliminer le paramètre PATH ou SYSTEM VARIABLE mentionné ci-dessus en important le certificat en tant qu'autorité de confiance.

  1. Invoquer certmgr.msc
  2. Cliquez avec le bouton droit sur le dossier Autorité de certification 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 Type de fichier et sélectionnez le fichier cacert.pem.
  6. Vous devriez recevoir un message "Import Successful"
0
Charles Owen