Selbstsignierte Zertifizierungsstellen pip/conda
Nachdem wir ein ähnliches Problem mit Git ausführlich dokumentiert haben ( Wie kann ich Git dazu bringen, ein selbstsigniertes Zertifikat zu akzeptieren? ), Befinden wir uns wieder hinter einer Unternehmensfirewall mit einem Proxy, der uns einen MitM- "Angriff" gibt , dem wir vertrauen sollten, und:
Deaktivieren Sie NIEMALS alle SSL-Überprüfungen!
Dies schafft eine schlechte Sicherheitskultur. Sei nicht diese Person.
tl; dr
pip config set global.cert path/to/ca-bundle.crt
pip config list
conda config --set ssl_verify path/to/ca-bundle.crt
conda config --show ssl_verify
git config --global http.sslVerify true
git config --global http.sslCAInfo path/to/ca-bundle.crt
Aber woher bekommen wir ca-bundle.crt?
Holen Sie sich ein aktuelles CA-Bundle
cURL veröffentlicht einen Auszug der mit Mozilla Firefox gebündelten Zertifizierungsstellen
https://curl.haxx.se/docs/caextract.html
Ich empfehle Ihnen, diese cacert.pemDatei in einem Texteditor zu öffnen, da wir dieser Datei unsere selbstsignierte Zertifizierungsstelle hinzufügen müssen.
Zertifikate sind ein Dokument, das X.509 entspricht. Sie können jedoch auf verschiedene Arten auf der Festplatte codiert werden. Der folgende Artikel ist eine gute Lektüre, aber die Kurzversion besagt, dass es sich um die Base64-Codierung handelt, die in den Dateierweiterungen häufig als PEM bezeichnet wird. Sie werden sehen, dass es das Format hat:
----BEGIN CERTIFICATE----
....
base64 encoded binary data
....
----END CERTIFICATE----
https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them
Erhalten Sie unser selbstsigniertes Zertifikat
Im Folgenden finden Sie einige Optionen, wie Sie unser selbstsigniertes Zertifikat erhalten:
- Über OpenSSL CLI
- Über den Browser
- Über Python Scripting
Holen Sie sich unser selbstsigniertes Zertifikat von OpenSSL CLI
/unix/451207/how-to-trust-self-signed-certificate-in-curl-command-line/468360#468360
echo quit | openssl s_client -showcerts -servername "curl.haxx.se" -connect curl.haxx.se:443 > cacert.pem
Holen Sie sich unsere selbstsignierte Zertifizierungsstelle über den Browser
Dank dieser Antwort und des verknüpften Blogs werden Schritte (unter Windows) zum Anzeigen des Zertifikats und zum Kopieren in eine Datei mithilfe der Base64-PEM-Codierungsoption angezeigt.
Kopieren Sie den Inhalt dieser exportierten Datei und fügen Sie ihn am Ende Ihrer cacerts.pemDatei ein.
Benennen Sie diese Datei aus Gründen der Konsistenz um cacerts.pem-> ca-bundle.crtund platzieren Sie sie an einem einfachen Ort wie:
%USERPROFILE%\certs\ca-bundle.crt
$HOME/certs/cabundle.crt
Holen Sie sich unsere selbstsignierte Zertifizierungsstelle über Python
Vielen Dank an alle brillanten Antworten in:
Wie erhalte ich ein SSL-Antwortzertifikat von Anfragen in Python?
Ich habe Folgendes zusammengestellt, um zu versuchen, noch einen Schritt weiter zu gehen.
https://github.com/neozenith/get-ca-py
Schließlich
Stellen Sie die Konfiguration in pip und conda so ein, dass sie weiß, wo sich dieser CA-Speicher mit unserer zusätzlichen selbstsignierten CA befindet.
pip config set global.cert %USERPROFILE%\certs\ca-bundle.crt
conda config --set ssl_verify %USERPROFILE%\certs\ca-bundle.crt
ODER
pip config set global.cert $HOME/certs/ca-bundle.crt
conda config --set ssl_verify $HOME/certs/ca-bundle.crt
DANN
pip config list
conda config --show ssl_verify
pip config list -v
For variant 'global', will try loading '/Library/Application Support/pip/pip.conf'
For variant 'user', will try loading '/Users/jpeak/.pip/pip.conf'
For variant 'user', will try loading '/Users/jpeak/.config/pip/pip.conf'
For variant 'site', will try loading '/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/pip.conf'
Verweise