twisted getPage und OpenSSL.SSL.Error

  • Hallo


    Ich rufe in einem Plugin aus dem Internet mit getPage (twisted) eine https-Seite von github ab.
    Bei mir mit OE2.5 funktioniert das ohne Probleme.

    Python
    from twisted.web.client import getPage
    
    
    self.deferred = getPage(https_url, timeout=7)
    self.deferred.addCallback(self.getVersion)
    self.deferred.addErrback(self.getVersionErrorHandler)

    Ein User mit der 7020HD und aktuellem exp. OE2.0 hat jetzt plötzlich ein Problem dabei.
    Vorher hat es auch bei ihm ohne Probleme funktioniert.
    Bei ihm kommt jetzt folgender Fehler:


    <class 'OpenSSL.SSL.Error'>: [('SSL routines', 'SSL23_GET_SERVER_HELLO', 'tlsv1 alert protocol version')]


    SSL ist nicht mein Thema :winking_face:
    Will github eine Verbindung mit SSL23 und von der 7020 kommt nur eine Anfrage mit SSL1?
    Kann es sein, dass github da was geändert hat, dass es bei ihm plötzlich nicht mehr geht?
    Gibt es da einen zusätzlichen Befehl, um das SSL-Protokoll für getPage festzulegen?


    Danke schon mal


    Hier noch ergänzende Angaben zu seinem System:
    root@dm7020hd:~# opkg list-installed | grep openssl
    openssl - 0.9.8za-r15.0
    openssl-misc - 0.9.8za-r15.0
    python-pyopenssl - 0.13-r1

    Box:7020HD
    Experimental 2016-06-16 OE2.0
    Enigma2: 2016-06-16
    Gemini Version: 0.81-r1

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Kann sein das es aus einer anderen Ecke kommt, im EPGTranslatorLite musste ich z.B. das reinmachen:


    Code
    import ssl                                                           
    try:                                                                 
        _create_unverified_https_context = ssl._create_unverified_context
    except AttributeError:                                                          
        # Legacy Python that doesn't verify HTTPS certificates by default
        pass                                                               
    else:                                                                   
        # Handle target environment that doesn't support HTTPS verification 
        ssl._create_default_https_context = _create_unverified_https_context
  • Danke, wäre zumindest ein Versuch wert.


    Nur komisch, dass es bei ihm ja bisher funktioniert hat.
    Da kann ja fast nur eine Änderungen bei github erfolgt sein ?!?


    Das wäre ja dann auch dieser Code, oder ?
    Der spielte ja aktuell im SP und SR auch eine Rolle.

    Code
    import ssl
    if hasattr(ssl, '_create_unverified_context'):
    	ssl._create_default_https_context = ssl._create_unverified_context

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Korrekte Zertifikate und damit verifizierte ssl requests wären immer besser ... aber sofern es zugelassen wird (der EPGTranslatorLite geht ja auf translate.google.com) geht es halt so auch ...


    Und Zertifikate laufen halt ab oder werden neu eingespielt oder ...

  • Ich spiele sowieso nicht gerne stille Post mit Plugin Entwicklern von der dunklen Seite der Macht, aber komisch ist da gar nichts ...

  • Das funzt so einfach nicht beim Twisted, schau dir mal im MP die tw_util.py an.


    Edit: Hab jetzt erst gelesen das du von der 7020 sprichst, das Image ist zu alt, der Twisted ist zu alt, das Python ist zu alt, da gibt es keinen Weg vorbei.

  • Ok. Danke.


    Verstehe das Ganze trotzdem nicht ganz, da es auf der 7020 bisher auch funktioniert hat.
    Einzige Erklärung wäre, das github da aktuell was geändert hat und somit ältere Images jetzt plötzlich ausgesperrt werden.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    Einmal editiert, zuletzt von Sven H ()

  • Ich spiele sowieso nicht gerne stille Post mit Plugin Entwicklern von der dunklen Seite der Macht, aber komisch ist da gar nichts ...

    Was meinst du denn mit "Plugin Entwickler von der dunklen Seite der Macht" ?
    Weiß im Moment nicht so recht, wie ich das deuten soll ?? :thinking_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • @gutemine


    Jetzt hab ich endlich geschnallt, was du meinst :smiling_face:


    Das hast du falsch verstanden. Ich habe deinen Tipp nicht durch einen anderen Entwickler testen lassen.
    Ich hab deinen Tipp in meinem Plugin-Code integriert und durch den "Problem-User" auf der 7020HD testen lassen :winking_face:


    Bei meinem Plugin geht es um den GithubPluginUpdater.
    https://github.com/svenh0/GithubPluginUpdater

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Ich hab zu dem Problem das hier gefunden:
    https://stackoverflow.com/a/38502727


    Demnach kann OpenSSL 0.9.8 kein TLS1.2, was aktuell für github.com aber zwingend nötig ist.
    Hab das mal im IE11 simuliert und TLS1.2 deaktiviert. Danach konnte ich die Seite von github.com nicht mehr aufrufen.


    Da es vor wenigen Tagen auch mit OpenSSL 0.9.8 noch funktioniert hat, konnte es eigentlich nur an github liegen.
    Und tatsächlich haben sie bei github jetzt zum 23.02.2018 das TLS1.0/1.1 deaktiviert.
    Die Bestätigung ist hier zu finden:
    https://github.com/blog/2507-w…graphic-standards-removed

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    6 Mal editiert, zuletzt von Sven H ()

  • Das bringt dir alles nichts du braucht ein anderes Python was TLS1.2 kann und neueren Twisted. Du kannst mir das ruhig glauben wenn ich sag OE2.0 ist außen vor wenn es um https geht.
    Wenn du keine Möglichkeit hast auch mit http zuzugreifen dann ist das vorbei.


    Das ist der Hauptgrund warum ich selbst kein OE2.0 mehr supporte.

  • Naja, OpenATV hat OpenSSL 1.0.2 in ihrem Image 6.2 für die 7020HD ja auch in OE2.0 reinbekommen.
    Aber vermutlich nur, weil dabei alles andere auch angepasst wurde.


    Also müsste man vermutlich ein komplett neues DMM-Image aufsetzen, was für die alten Boxen bestimmt keiner mehr machen wird.


    github.com lässt nur noch https-Verbindungen mit TLS1.2 zu.


    Wenn die User mit den alten Boxen den GithubPluginUpdater weiterhin nutzen wollen, hilft wohl nur der Weg über OpenATV :winking_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • OE2.5 ist letztlich nur die Entwicklungsumgebung. Du kannst natürlich alles portieren auf eine andere OE-Version.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Die VU's mit VTI 13 haben auch keine Probleme.
    Die nutzen OpenSSL 1.0.2a und Python 2.9.7.


    Schade, dass die älteren (7020HD, 800se) da mit DMM-Image erstmal raus sind. :frowning_face:


    Naja, irgendwann sollte man dann wohl den Wechsel auf eine neuere Dreambox vollziehen :winking_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    Einmal editiert, zuletzt von Sven H ()