2010-02-12 3 views
4

A avez un travail Perl cron qui a récemment commencé à avoir ses connexions HTTPS commencent à échouer avec une erreur de «500 délai de lecture SSL». J'ai suivi que l'erreur est lancée dans le cadre d'une alarme dans Crypt::SSLeay, mais je ne sais pas si c'est quelque chose qui prend trop de temps à répondre. Jusqu'ici, j'ai ajusté le délai d'attente de 30 secondes par défaut à 10 minutes et il expire toujours. J'ai déplacé le script vers d'autres machines, et celles sur les systèmes Intel Mac OS X, toutes les fois, tandis que celles sous Linux ou sur les systèmes PPC Mac OS X fonctionnent bien, donc je ne pense pas que ce soit des changements sur le réseau ou à distance serveur. Lorsque le processus a commencé à avoir des problèmes ne coïncide pas avec des mises à jour logicielles ou des redémarrages sur la machine, et j'ai contacté le serveur auquel je me connecte, et tout le monde prétend qu'ils n'ont rien changé.Pourquoi Perl's Crypt :: SSLeay timeout sur les machines Intel Mac OS X?

Quelqu'un a-t-il des recommandations pour essayer de déboguer le protocole HTTPS, ou avez-vous déjà vu ce comportement et donné des recommandations sur quelque chose que j'aurais pu ignorer et qui aurait pu causer ce problème?

+3

Qu'en est-il des versions de vos Perl Modules (et de Perl lui-même)? Sont-ils tous les mêmes sur les machines? – ziya

+2

La connexion réussit-elle avec un navigateur? Pouvez-vous renifler les paquets en utilisant Wireshark? Vous pouvez également obtenir une image décente de ce qui se passe avec openssl s_client, même si vous devrez peut-être configurer ses certificats de confiance. –

+0

@Maxwell Troy Milton King: Les modules sont tous les mêmes, mais j'ai différentes versions de perl sur toutes les machines (perl 5.8.x par défaut sur le système d'exploitation, mais les machines Intel fonctionnent 10.5 et 10.6, tandis que le ppc sont en cours d'exécution 10.4 et 10.5) – Joe

Répondre

3

Le problème semble être spécifique à OS X et directement lié à OpenSSL, donc pas unique à perl. Cela concerne peut-être l'une des dernières mises à jour de sécurité d'Apple (2010-001).

Je vais avoir le même problème avec:

  • httplib python (ajouts plus ~ produits 64k 'L'opération de lecture a expiré' erreur). Des téléchargements plus petits sur le travail SSL. Les téléchargements de toutes tailles sur le travail HTTP.

  • boucle sur HTTPS. boucle expire. La même commande curl de Linux fonctionne bien avec HTTP et HTTPS. Curl sur OS X sur HTTP fonctionne également très bien.

J'ai trouvé quelques sites en ligne qui traitent des problèmes similaires dans différents langages/logiciels de programmation. Je ne peux en poster qu'un ... https://blog.torproject.org/blog/apple-broke-openssl-which-breaks-tor-os-x

+0

Étrange ... Je ne pensais pas que cela coïncidait avec une mise à jour, mais après vérification, il semble que je n'ai pas demandé à tous les administrateurs système - et en vérifiant/Library/Receipts/InstallHistory.plist, je vois que "Security Update 2010-001" a été installé 15 minutes avant que le problème n'apparaisse. (et je devine, n'a pas besoin d'un redémarrage) – Joe

+0

Je viens de faire une vérification rapide sur Tiger (qui était hors ligne depuis un certain temps, donc certainement pas eu la mise à jour) et tout a bien fonctionné.Bizarrement, je m'attendais à une version différente d'OpenSSL, mais Tiger et Leopard montrent la même version 0.9.7l ... – gingerlime

+0

une autre note et une solution de contournement/solution potentielle - le délai semble avoir lieu lors du téléchargement/envoyer de petites tailles de morceaux. L'augmentation de la taille du tampon/segment (à environ 8192 octets) pour chaque envoi semblait permettre le chargement d'un téléchargement. Seulement testé sur python, donc ne peut pas commenter sur perl, mais pourrait valoir la peine d'essayer. – gingerlime