OpenSSL::SSL::SSLError: SSL_connect retourné=1 errno=0=inconnu de l'état: le protocole inconnu
J'ai suivi de nombreux posts sur le sujet et non d'entre eux ont aidé.
Je suis en train d'essayer de vous connecter en utilisant la plus simple de la cisr commandes:
require 'open-uri'
open ('https://aristo4stu3.bgu.ac.il')
La chose étrange est que, pour tout autre uri de https, j'ai essayé, ça a bien fonctionné (c'est à dire https://google.com).
À des fins de débogage, j'ai même essayé de désactiver la vérification SSL à l'aide de:
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
qui n'a pas semblé aider.
Ma configuration est (AWS):
$ rvm -v
rvm 1.21.3 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
$ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 13.04
Release: 13.04
Codename: raring
Journal complet:
2.0.0-p247 :001 > require 'open-uri'
=> true
2.0.0-p247 :002 > open('https://aristo4stu3.bgu.ac.il')
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=unknown state: (null)
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:918:in `connect'
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:918:in `block in connect'
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/timeout.rb:52:in `timeout'
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:918:in `connect'
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:851:in `start'
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:313:in `open_http'
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:708:in `buffer_open'
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:210:in `block in open_loop'
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:208:in `catch'
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:208:in `open_loop'
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:149:in `open_uri'
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:688:in `open'
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:34:in `open'
from (irb):2
from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p247/bin/irb:16:in `<main>'
Quels sont les logs de votre serveur en train de dire?
ce que u veux dire? Il se produit localement, de la cisr.
Vous exécutez l'ouverture d'uri, localement, c'est vrai, mais c'est la connexion à un serveur qui n'est pas de donner à votre Ruby client ssl ce qu'elle cherche. Voir @rhashimoto avec ses idées.
oh, mais malheureusement je n'ai pas accès au serveur. Et oui, @rhashimoto a un bon point.
Dans ce cas, il laisse entendre qu'il sont les administrateurs de ce serveur, je voudrais leur poser des questions concernant la connexion via ssl, certificat versions requises, etc.
ce que u veux dire? Il se produit localement, de la cisr.
Vous exécutez l'ouverture d'uri, localement, c'est vrai, mais c'est la connexion à un serveur qui n'est pas de donner à votre Ruby client ssl ce qu'elle cherche. Voir @rhashimoto avec ses idées.
oh, mais malheureusement je n'ai pas accès au serveur. Et oui, @rhashimoto a un bon point.
Dans ce cas, il laisse entendre qu'il sont les administrateurs de ce serveur, je voudrais leur poser des questions concernant la connexion via ssl, certificat versions requises, etc.
OriginalL'auteur Rizon | 2013-06-28
Vous devez vous connecter pour publier un commentaire.
Le problème semble être que votre site cible,
aristo4stu3.bgu.ac.il
, est pointilleux sur SSL/TLS handshake. J'ai eu deux réponses différentes à la suite de commande OpenSSL avec de différentes versions d'OpenSSL:Ce n'connecter avec le stock de OpenSSL 0.9.8 x sur OS X 10.7.5. Toutefois, il ne pas se connecter à l'aide d'OpenSSL 1.0.1 e - dans ce cas, le serveur ferme la connexion (par l'envoi d'une alerte de notification de fermeture) immédiatement après réception de la Client Bonjour.
J'ai capturé des paquets avec Wireshark, et la différence entre ces deux versions de l'envoyer, c'est que 0.9.8 x est l'envoi d'un SSLv2 Client Hello soutien de la publicité par le biais de TLS 1.0, tandis que la version 1.0.1 e est l'envoi d'un TLSv1 Client Hello soutien de la publicité par le biais de TLS 1.2.
Si je dis 1.0.1 e de ne pas utiliser TLS:
Ce connecte avec succès un SSLv3 Client Hello soutien de la publicité par le biais du protocole SSL 3.0.
D'ailleurs, mon local ruby n'établir une connexion avec
open-uri
de votre site:Donc indiqué approches semblent être:
Il ne semble pas que la
open-uri
module dispose d'une option pour définir le protocole SSL/TLS version utilisée pour communiquer. Si vous ne pouvez pas modifier le serveur vous devrez peut-être utiliser un autre module ou à la bibliothèque pour établir la connexion, ou peut-être trouver un moyen de patcher leopenssl
module de sorte qu'il utilise un autre Client Bonjour.Je ne sais pas à propos de ces bibliothèques spécifiques. Je l'a trouve étroitement liés à la question, même si, a quelques suggestions: stackoverflow.com/questions/6821051/....
Lorsque je visite votre site cible avec Chrome, que l'un des commentaires suggère, je reçois la même réponse quand je clique sur l'icône de verrouillage:
The connection had to be retried using an older version of the TLS or SSL protocol. This typically means that the server is using very old software and may have other security issues.
Cela appuie la conclusion que vous avez besoin d'utiliser une bibliothèque (ou écrire votre propre) qui le fera réessayer ou utiliser l'ancien protocole pour commencer.ouais, je suppose que vous avez raison. BTW, l'exécution du code sur Heroku et il fonctionne très bien! Je pense qu'ils ont de l'exécution de l'ancienne version de openssl...
OriginalL'auteur rhashimoto
J'ai trouvé une bonne description du problème & solution ici. http://blog.55minutes.com/2012/05/tls-error-with-ruby-client-and-tomcat-server/
TLDR extrait de code qui résout le problème.
OriginalL'auteur Hopsoft
J'ai reçu le même message et simplement, il s'est avéré que j'avais
http.use_ssl = true
définies sur une connexion SSL.OriginalL'auteur user1756254
Si vous êtes sur Mac et c'est un OSX certificat de problème (ce qui était le cas pour moi), vous pouvez résoudre le problème en exécutant:
Voir https://rvm.io/support/fixing-broken-ssl-certificates
OriginalL'auteur pcv