2016-10-11 7 views
2

Ich versuche, eine Python-Datei PyPI über twine upload <file> zu laden, aber ich erhalte einen SSL-Fehler:Python SSL-Zertifikat-Validierung auf einiger Verteilung fehlschlägt Befehle

C:\pypubsub>twine upload dist\PyPubSub-4.0.0rc1-py3-none-any.whl 
Uploading distributions to https://upload.pypi.org/legacy/ 
Uploading PyPubSub-4.0.0rc1-py3-none-any.whl 
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645) 

Anderen Python-Skripte, die SSL haben das gleiche Problem zu verwenden, Beispiel

  • mit python setup.py bdist_wheel upload <my_package>
  • mit pip install <any_package>; aber es kann ich --trusted-host pypi.python.org einen pip install Befehl hinzufügen und die Installation und das Herunterladen von Abhängigkeiten erfolgreich sein werde

Dies geschieht auf meinem Firmenlaptop, ob zu Hause oder arbeiten, aber es funktioniert nicht auf meinem persönlichen Laptop passieren.

Um dies zu umgehen, habe ich versuchte im Grunde SO answer to similar problem (dh das Zertifikat exportieren, dass Garn zu validieren versucht - vermutlich, dass die pypi.python.org - und dann Bindfäden sagen, es zu benutzen):

  1. von Chrome, ging ich zu https://pypi.pythong.org, klickte das Schloss neben der URL, dann Details, Zertifikat anzeigen, Details, In Datei kopieren. Dies erzeugte eine .CER-Datei.
  2. Ich habe SSL Converter verwendet, um die .CER-Datei vom DER-Format in das PEM-Format zu konvertieren. Dies erstellt eine .CRT-Datei.
  3. Ich lief Schnur als twine upload <my_package> --cert <path to CRT file>; Diesmal war der SSL-Fehler SSLError: [SSL] PEM lib (_ssl.c:2846).

ich versuchte dann durch c:\Python35\lib\ssl.py in Opting Out wie beschrieben Patchen von Serverzertifikatvalidierungs entscheiden sich: I die Linie _create_default_https_context = create_default_context durch _create_default_https_context = _create_unverified_context ersetzt. Die erneute Ausführung des Befehls twine ist mit dem ursprünglichen Fehler CERTIFICATE_VERIFY_FAILED erneut fehlgeschlagen.

Ich bin nicht so vertraut mit Zertifikaten, so dass ich jetzt ratlos bin, was ich noch versuchen sollte.

Antwort

0

Sie können ein --cert Flag zu twine übergeben welches Zertifikat zu verwenden.

twine upload dist\PyPubSub-4.0.0rc1-py3-none-any.whl --cert <path-to-.pem-file> 

Um eine .cer einen .pem Datei verdeckte, gehen Sie wie folgt.

openssl x509 -inform der -in certificate.cer -out certificate.pem 

Die --cert Flagge ist für eine, die benutzerdefinierte ssl Zert verwendet. Wenn Sie ein Unternehmensnetzwerk verwenden, sollte das obige Update Sie aussortieren. Fragen Sie Ihren Administrator für die SSL-Zertifikate :)

+0

Thx @ Karanja für die Antwort. Aber es scheint, dass dies bestätigt, dass die Schritte 1 bis 3 meines Posts funktionieren sollten, aber vielleicht habe ich Schritt 2 nicht richtig gemacht? – Schollii

+0

@Schollii sind Sie hinter einer Unternehmensfirewall? Wenn ja, haben Sie Zugriff auf die https SSL-Zertifikate? Sie müssen die '.cer' Datei in eine' .pem' Datei umwandeln. –

+0

also muss ich die https ssl certs von unserer IT bekommen? Es ist also eine Reihe von SSL-Zertifikaten, nicht nur für die Seite, mit der ich Probleme habe? – Schollii