/usr/home

just some random thoughts

Python 2: SSL Verbindungen hängen

Da viele Websitenbetreiber wegen der POODLE SSL Lücke die SSL Version 3 nun auch abgeschaltet haben und daher nur noch TLS erlauben, hat so mancher Python 2 Code Probleme.

Bei mir war z.B. kein Timeout definiert, weswegen der Verbindungsaufbau niemals beendet werden konnte. Nach Abbrechen zeigt sich folgender Traceback:

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 305, in do_handshake self._sslobj.do_handshake()

Das liegt einfach daran, dass das SSL Modul in Python 2 (zumindest unter OS X) kein TLS versucht. Abhilfe schafft folgendes Snippet, das am Anfang des Codes platziert werden sollte:

import httplib
import ssl
from functools import partial

class httplib_tls:
    wrap_socket = partial(ssl.wrap_socket, ssl_version=ssl.PROTOCOL_TLSv1)

httplib.ssl = httplib_tls