Python fordert SSL-Problem an

8

Es ist schon Tage her, dass ich nach einer Lösung dafür gesucht habe.

Ich habe versucht, Anfragen zu verwenden, um eine HTTPS-Anfrage über einen Proxy ohne Glück zu machen.

Obwohl dies in einem größeren Projekt von mir enthalten ist, läuft alles darauf hinaus:

%Vor%

Ich habe versucht, das kward verify = False, aber ich bekomme immer den gleichen Fehler oder eine Variation davon:

%Vor%

Ich verwende die neuesten Versionen von Anfragen und openssl und 2.7.3 für Python. Ich habe es auf Mac Mountain Lion 10.8.2 und auch auf Windows 7 getestet.

Ich habe das gegooglet, sah andere mit ähnlichen Problemen. Ich habe verwandte Pull-Requests für die Anfragen der Bibliotheken und urllib3 gefunden, außerdem habe ich gesehen, dass Informationen darüber eine schlechte Implementierung des Verbs http connect sind. Ich habe eine Lösung gefunden, um einen benutzerdefinierten Adapter zu verwenden (ich erinnere mich nicht genau, aber ich denke, es ist der richtige Ausdruck), ein benutzerdefiniertes SSL-Protokoll zu verwenden. Versuchte sie alle, niemand half.

Also, ich suche nach mehr Informationen. Hast du eine Idee was los ist, kann ich es reparieren, etc, etc ...

Alle Hilfe ist willkommen und danke euch allen!

PS: Ich habe mehrere Proxys ausprobiert, und ich bin mir sicher, dass sie nicht das Problem sind.

    
mg_ 18.01.2013, 00:27
quelle

2 Antworten

14

Ich hatte das gleiche Problem, aber bei der Verwendung von oauth2client (Google-Bibliothek für die Verwendung von oauth2 gegen ihre APIs). Nach einem Tag des Faffings ("Experimentieren") entdeckte ich, dass die Variable env wie folgt eingestellt war:

%Vor%

Ändern Sie dies zu

%Vor%

hat das Problem für mich komplett gelöst. Vermutlich bedeutet dies, dass der anfängliche Handshake vom Client zum Proxy jetzt unverschlüsselt ist, aber danach muss das https direkt fließen. Ich glaube nicht, dass mein Firmen-Proxy so konfiguriert wurde, dass er https trotzdem anruft.

Beachten Sie jedoch, dass sich alle Browser mit der vorherigen Einstellung gut benommen haben. Vielleicht versuchten sie stillschweigend, die Proxy-Verbindung über http herzustellen, nachdem sie https nicht benutzt haben.

Googling zeigt Beispiele für die Einstellung von https_proxy für HTTP- und HTTPS-Adressen gleichermaßen. Ich denke, es hängt davon ab, wie der Proxy konfiguriert ist.

Die Schaltfläche "Für alle Protokolle verwenden" in den Popup-Fenstern der Browser / Betriebssystemkonfiguration macht es einfach, versehentlich die Einstellung zu verwenden, die ich hatte.

Aber ich bin mir nicht sicher, ob das dein Problem ist. Ihr Code schlägt vor, dass Sie für HTTP und HTTPS genau die gleichen Proxyeinstellungen verwenden.

Übrigens, das war alles auf Ubuntu 12.04.1.

    
Timothy Corbett-Clark 23.01.2013 16:01
quelle
2

Die Antwort hier hat für mich funktioniert die Verwendung von Anfragen mit TLS gibt keine SNI-Unterstützung

Ich habe die drei abhängigen Bibliotheken installiert und in die zweite Antwort den Affe-Patch-Tipp aufgenommen

    
brianf 15.01.2014 23:48
quelle