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
    1. from twisted.web.client import getPage
    2. self.deferred = getPage(https_url, timeout=7)
    3. self.deferred.addCallback(self.getVersion)
    4. 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 ;)
    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

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


    Code
    1. import ssl
    2. try:
    3. _create_unverified_https_context = ssl._create_unverified_context
    4. except AttributeError:
    5. # Legacy Python that doesn't verify HTTPS certificates by default
    6. pass
    7. else:
    8. # Handle target environment that doesn't support HTTPS verification
    9. 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
    1. import ssl
    2. if hasattr(ssl, '_create_unverified_context'):
    3. ssl._create_default_https_context = ssl._create_unverified_context
  • 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 ...

  • 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.

  • @gutemine


    Jetzt hab ich endlich geschnallt, was du meinst :)


    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 ;)


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

  • 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

  • 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 ;)

  • 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. :(


    Naja, irgendwann sollte man dann wohl den Wechsel auf eine neuere Dreambox vollziehen ;)