2016-01-11 4 views
0

J'utilise OpenUri pour lire un fichier JSON à partir d'un serveur HTTPS. Il fonctionnait très bien il y a quelques jours, mais ce matin, je me suis:OpenUri et OpenSSL ne peuvent pas obtenir le certificat de l'émetteur local

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed 
The server presented a certificate that could not be verified: 
error code 20: unable to get local issuer certificate 

Je pense que le serveur vient de renouveler son certificat SSL alors je me demande si c'est lié? Sinon mon système a-t-il perdu ses certs de racine? Je cours Mac OS 10.11.2, Ruby 2.3.0 et OpenSSL 1.0.2e, installé avec Homebrew et j'utilise RVM.

+0

Si le serveur a été modifié, c'est que vous n'avez pas la nouvelle autorité de certification racine requise ou que le serveur n'a pas pu servir la chaîne de certificats complète. Il se peut aussi que vous ayez un nouvel OpenSSL mais que ruby ​​soit lié à l'ancien de Mac (c'est-à-dire 0.9.8). Trop peu de détails pour vous aider ici plus, mais si le serveur est public, vous pouvez ajouter l'URL à votre question afin que l'on puisse jeter un oeil. –

+0

Merci @SteffenUllrich J'ai déjà dû reconstruire ruby ​​pour lier le nouveau OpenSLL. Le serveur est kimonolabs.com si vous souhaitez en savoir plus. –

Répondre

1

Le serveur est kimonolabs.com

Le serveur n'a pas envoyé les certificats intermédiaires qui sont nécessaires pour construire la chaîne de confiance. Ainsi, la validation échoue. Dans ces cas, les navigateurs utilisent souvent des certificats intermédiaires mis en cache provenant d'une connexion antérieure à d'autres sites ou tentent de télécharger les certificats manquants sur le Web. Mais les autres clients ne le font pas et la validation échoue donc.

Voir aussi the report from SSLLabs:

chaîne de certificats de Ce serveur est incomplet. Niveau plafonné à B.

Ainsi, le problème doit être résolu du côté serveur.

+0

Merci, je ne savais pas que cela le casserait. J'espère qu'ils seront bientôt triés. –