2010-08-17 17 views
11

J'ai un client ruby ​​qui se connecte à un serveur d'échange en utilisant IMAP & SSL. J'utilise la bibliothèque Ruby Net :: IMAP (qui utilise openssl sous les couvertures) pour se connecter. Cela fonctionne bien depuis des mois. Le serveur d'administration Exchange installé nouveau cert de GoDaddy et maintenant je reçois cette erreur:SSL_connect SYSCALL retourné = 5 errno = 0 état = SSLv2/v3 serveur de lecture bonjour A

SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A 

Est-ce que quelqu'un sait ce que cela signifie erreur? (J'ai essayé googling)

Je suspecte qu'il y ait un problème avec le nouveau CERT provoquant ceci, mais je ne sais pas comment le dépanner.

Aussi je sais que vous pouvez désactiver la vérification des certificats lors de l'utilisation NET: HTTP en faisant:

http.verify_mode = OpenSSL::SSL::VERIFY_NONE if http.use_ssl? 

mais je ne peux pas savoir comment faire en utilisant NET: IMAP. Je veux désactiver cela pour voir si c'est le problème.

Comme pour le code im en utilisant: Im en utilisant ce (ou très proche de cette) http://github.com/look/fetcher/blob/master/lib/fetcher/imap.rb

J'ai essayé de changer à: @connection = Net :: IMAP.new (@server, @Port, @ssl , nul, false)

Voici le stacktrace

checking emails on: Tue Aug 17 20:48:01 +0000 2010 
rake aborted! 
SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A 
/usr/lib/ruby/1.8/net/imap.rb:904:in `connect' 
/usr/lib/ruby/1.8/net/imap.rb:904:in `initialize' 
/u/apps/aras/releases/20100728212439/vendor/plugins/fetcher/lib/fetcher/imap.rb:34:in `new' 
/u/apps/aras/releases/20100728212439/vendor/plugins/fetcher/lib/fetcher/imap.rb:34:in `establish_connection' 
/usr/lib/ruby/gems/1.8/gems/system_timer-1.0/lib/system_timer.rb:28:in `timeout_after' 
/u/apps/aras/releases/20100728212439/vendor/plugins/fetcher/lib/fetcher/imap.rb:33:in `establish_connection' 
/u/apps/aras/releases/20100728212439/vendor/plugins/fetcher/lib/fetcher/base.rb:31:in `fetch' 
+0

Avez-vous essayé d'augmenter la valeur de timeout_call (probablement pas le problème)? Aussi, je suppose que vous avez testé la connexion au serveur IMAP avec un autre client IMAP et vérifié que cela a fonctionné, correct? – Brian

+0

J'ai essayé d'augmenter le délai, mais il échoue très rapidement. Haven a essayé un autre client, mais cela a fonctionné avant d'effectuer le changement sur le serveur. – Joelio

+0

Je revérifier avec un autre client et/ou inspecter le certificat pour m'assurer qu'il n'y a rien d'horriblement mauvais (comme le nom d'hôte sur le cert ne correspond pas au nom d'hôte auquel vous vous connectez). – Brian

Répondre

1

Eh bien, il tourne la cause racine de celui-ci était l'échange de ms a été mal configuré. J'aurais aimé en savoir plus sur les erreurs SSL et comment les tromper, mais je n'ai pas eu beaucoup d'informations à ce sujet.

J'ai essayé juste troublshoot cela en utilisant ssl ouvert, FYI, vous pouvez faire: OpenSSL> s_client -connect monserveur: 993

Quand il a été cassé, j'ai reçu cette erreur: CONNECTE (00000003) 26831: erreur: 140790E5: routines SSL: SSL23_WRITE: poignée de main ssl échec: s23_lib.c: 188:

une fois que nous avons fixé, je suis un cert et un message poignée de main, etc.

Voici ce que mon échange admin a dit qu'il a fait: "Je suis juste allé au protocole IMAP l et est allé à l'onglet d'accès. Ensuite, le bouton Certificats. De là, j'ai choisi de remplacer le CERT et j'ai choisi le nouveau CERT. "

0

Selon le documentation, vous pouvez définir la vérification SSL à aucun lors de l'instanciation net: IMAP

foo = Net::IMAP.new(host, port, true, nil, false) 

Vous pouvez également pointer vers une copie locale du certificat CA avec l'option certs.

Note: Je n'ai pas essayé moi-même ...

+0

Merci, essayé, ceci, toujours la même erreur, merci, je ne suis pas sûr si c'est la même chose ou non. – Joelio

+0

Pouvez-vous poster le code que vous utilisez? – Brian

+0

sûr, question mise à jour – Joelio

3

J'ai reçu cette erreur en essayant de me connecter à dynamoDB avec les rails 3 en utilisant la configuration par défaut. solution a été d'ajouter

config.port = 443 

au

dynamo_db.rb

initialiseur

A ce jour ce correctif est dans une branche unmerged de la gemme.