[gelöst]python Fehler: sslv3 alert handshake failure ->TLS SNI fehlt

  • Hallo.


    ich habe seit 3 Tagen folgenden Fehler mit downloadPage auf Soundcloud.

    Code
    2015.02.25-08:48:37.562496 SCMain]useravatarDlError][Failure instance: Traceback: <class 'OpenSSL.SSL.Error'>: [('SSL routines', 'SSL23_GET_SERVER_HELLO', 'sslv3 alert handshake failure')]
    /usr/lib/enigma2/python/e2reactor.py:73:_read
    /usr/lib/python2.7/site-packages/twisted/internet/tcp.py:214:doRead
    /usr/lib/python2.7/site-packages/twisted/internet/tcp.py:220:_dataReceived
    /usr/lib/python2.7/site-packages/twisted/protocols/tls.py:415:dataReceived
    --- <exception caught here> ---
    /usr/lib/python2.7/site-packages/twisted/protocols/tls.py:554:_write


    Anfragen die ich über requests.get() mache gehen sauber durch. Das ist zum downloaden aber sub optimal. Ich habe ein bisschen gegoogelt und komme nur auf "Poddle" und das Webserver immer öfter ssl_v3 deaktivieren.


    Hier eine Bsp Picurl:

    Code
    https://i1.sndcdn.com/artworks-000070755825-caegil-large.jpg


    Gibt es eine Möglichkeit twisted downloadPage auf ein aktuelleres Protokoll umzustellen? :wacko:


    MfG.


    Edit: tritt unter OE 2.0 und 2.2 auf...

    Die meisten Probleme macht man sich selber!

    3 Mal editiert, zuletzt von Bobo71 () aus folgendem Grund: Update

  • Ich muss mich korrigieren...


    requests funktioniert auch nicht... :wacko:



    Im Browser kann ich die Bilder downloaden. :confused_face:

    Die meisten Probleme macht man sich selber!

    Einmal editiert, zuletzt von Bobo71 ()

  • Es ist gar nicht mehr möglich das Pic zu laden unter python... :upside_down_face:


    urllib2 selber Fehler.

    Code
    urllib2.URLError: <urlopen error [Errno 1] _ssl.c:504: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure>


    Schafft es vielleicht jemand diese Pic zu laden unter python?

    Code
    https://i1.sndcdn.com/artworks-000070755825-caegil-large.jpg


    Ich verzweifle gerade...

    Die meisten Probleme macht man sich selber!

  • Hallo Reichi,


    es liegt am nicht vorhandenen TLS SNI Support. Python >3 hat den Support on Board. :astonished_face:


    <<Hier>> kann man eine Diskussion dazu lesen


    Dort gibt es einen Patch für Python 2.7.5
    Patch 2.7.5


    Ich habe es nun zumindest mit requets zum laufen bekommen. Es müssen aber mehrere Pakete nachinstalliert werden. Eins davon gibt es nicht auf eurem Feed. ->ndg-httpsclient (tested with 0.3.2)
    Könntet Ihr das aud den Feed nehmen? :smiling_face:


    Anbei die Readme aus->/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py


    Für twisted habe ich nichts verwertbares gefunden zum TLS SNI Support... :upside_down_face:

    Die meisten Probleme macht man sich selber!

  • Ohne das jetzt konkret getestet zu ahben sollte folgendes in unseren Images eigentlich funktionieren (jedenfalls für die 7080/820)


    Seit wann ist das denn drinnen ? Habe in keinem Changelog was gelesen? Ich habe das letzte Merlin Image.


    Der Import allein scheitert schon.

    PHP
    from twisted.internet import ssl, task, protocol, endpoints, defer
    /usr/lib/python2.7/site-packages/twisted/internet/_sslverify.py:184: UserWarning: You do not have the service_identity module installed. Please install it from <https://pypi.python.org/pypi/service_identity>. Without the service_identity module and a recent enough pyOpenSSL tosupport it, Twisted can perform only rudimentary TLS client hostnameverification.  Many valid certificate/hostname mappings may be rejected.
      verifyHostname, VerificationError = _selectVerifyImplementation()


    MfG bobo.

    Die meisten Probleme macht man sich selber!

  • Hallo Reichi,


    ich hole das nochmal hoch... Wird das Problem im OE 2.5 gefixt sein?


    Code
    https://i1.sndcdn.com/avatars-000101653647-znyc4u-t500x500.jpg error->[Failure instance: Traceback: <class 'OpenSSL.SSL.Error'>: [('SSL routines', 'SSL23_GET_SERVER_HELLO', 'sslv3 alert handshake failure')]


    :question_mark:

    Die meisten Probleme macht man sich selber!

  • Der Fehler muss im OE2.5 weg sein weil da eine aktuelle Pythonversion (2.7.11) verwendet wird die auch richtigen TLS 1.2 Support hat.
    Und Twisted 14 ansich ist aktuell genug (man könnte den aber ggf. wohl noch aktualisieren wenn es notwendig ist, so war die Aussage die ich bekommen hab) :smiling_face:

  • Hallo.


    ich laufe aktuell wieder in das Problem:


    Code
    2018-11-05 19:24:06,059 - ERROR - GoogleImageSearchScreen]downloadError]->[Failure instance: Traceback: <class 'OpenSSL.SSL.Error'>: [('SSL routines', 'SSL23_GET_SERVER_HELLO', 'sslv3 alert handshake failure')]


    ich schaffe es leider nicht z.B. dieses Bild zu laden.


    Code
    https://images-na.ssl-images-amazon.com/images/I/51dVen9qWoL.jpg

    durch umwandeln in


    Code
    http://images-na.ssl-images-amazon.com/images/I/51dVen9qWoL.jpg

    :upside_down_face:

    Die meisten Probleme macht man sich selber!

  • Also die Boardsuche spuckt zu ContextFactory nur einen Post aus... :loudly_crying_face: und zwar deinen von eben.


    Ich hätte gern einen SSLSNIdownloadPage mit twisted downloadPage als Basis. Aber ich bin zu blöde den so anzupassen, das es funktioniert. Siehe Code



    Fehler: error expected string or buffer :confused_face:



    Mit dem Code aus twitch funktioniert es erst einmal irgendwie...



    Code
    error expected string or buffer
    Code
    error expected string or buffer

    Die meisten Probleme macht man sich selber!

    • Offizieller Beitrag

    Dein Fehler ist im Aufruf von downloadPage.

    Python
    contextFactory=TLSSNIContextFactory()
    	return downloadPage(url, fn, contextFactory, *args, **kwargs)


    Die Signatur von downloadPage ist aber wie folgt

    Python
    def downloadPage(url, file, *args, contextFactory=None, **kwargs):


    Das heißt, dass contextFactory ein sog. Keyword argument ist UND davor steht noch *args, durch wird deine contextFactory zum ersten wildcard arg in der Reihe.


    Richtig wäre

    Python
    factory=TLSSNIContextFactory()
    	return downloadPage(url, fn, *args, contextFactory=factory, **kwargs)

    Dabei darf deine contextFactory variable ruhig weiter "contextFactory" heißen, dann steht da halt contextFactory=contextFactory, python ist klug genug zu wissen dass vorne das keyword und hintn das argument steht ;).