Behebung eines SSL-Zertifikatsfehlers in der mit py2exe (oder PyInstaller) kompilierten exe

9

Ich habe gerade ein Python-Programm getestet, das die Anmeldung bei einer Site erfordert und die Einrichtung eines CSRF-Cookies erfordert. Ich habe versucht, es als eine exe mit py2exe und bekam einen Socket-Fehler. Ich habe das gleiche Problem, wenn ich mit PyInstaller versuche. Bei der Suche nach dem Errno habe ich ein paar andere Leute mit dem gleichen Problem gefunden und daher weiß ich, dass das Problem mit dem Speicherort von SLL-Zertifikaten zu tun hat.

Dies ist meine site_agent -Klasse einschließlich der Protokollierungsaufrufe.

%Vor%

Der Fehler kommt in der Zeile self.agent.get(URL) und der Trace-Back zeigt:

%Vor%

Bedeutet das, dass das Problem in requests.adapters ist?

Wenn ja, kann ich es einfach in meinen installierten Python-Paketen bearbeiten, um woanders nach cacert.pem zu suchen, meine exe mit py2exe oder PyInstaller neu aufzubauen und sie dann in meiner installierten Version von Python zu ändern?

BEARBEITEN

Ich habe jetzt das Programm nach dem Kompilieren mit PyInstaller und dem Setzen von verify=False in allen requests.get() und requests.post() Aufrufen ausgeführt. Aber SSL gibt es aus einem bestimmten Grund und ich möchte diesen Fehler wirklich beheben können, bevor jemand das Tool benutzen darf.

    
Jamie Bull 17.06.2013, 23:36
quelle

3 Antworten

4

Bei Verwendung von pyinstaller ... erstellen Sie eine hook-requests.py -Datei in PyInstaller\hooks\ für die Requests-Bibliothek, die

enthält %Vor%     
frmdstryr 24.09.2014 14:12
quelle
3

Neben der Antwort frmdstryr gegeben, musste ich sagen requests , wenn das cacert.pem beträgt. Ich fügte hinzu, die folgenden Zeilen direkt nach meinen Importen:

%Vor%

Diese Lösung von dieser Verbindung abgeleitet ist: Ссылка

    
joemar.ct 31.01.2015 02:09
quelle
1

Dies kann leicht gelöst werden, wenn Sie das Modul "Anfragen" verwenden.

1) Fügen Sie den folgenden Code in Ihre Haupt-Python-Datei ein, in der das Modul "requests" verwendet wird.

%Vor%

2) Erstellen Sie in Ihrem verteilbaren Ordner, in dem exe vorhanden ist, einen Ordner namens "certifi" und legen Sie die Datei "cacert.pem" darin ab.

3) Sie finden die Datei "cacert.pem" mit

%Vor%

Super. Jetzt enthält Ihr distributable die notwendigen Zertifikate, um SSL-Aufrufe zu validieren.

    
HVS 11.12.2015 15:38
quelle