Urzędy certyfikacji z podpisem własnym pip
/conda
Po dokładnym udokumentowaniu podobnego problemu z Gitem ( Jak sprawić, by git zaakceptował certyfikat z podpisem własnym? ), Znowu jesteśmy za korporacyjną zaporą ogniową z serwerem proxy, który daje nam „atak” MitM , któremu powinniśmy zaufać i:
NIGDY nie wyłączaj całej weryfikacji SSL!
Stwarza to złą kulturę bezpieczeństwa. Nie bądź tą osobą.
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
Ale dokąd to dotrzemy ca-bundle.crt
?
Uzyskaj aktualny pakiet CA
cURL publikuje wyciąg z urzędów certyfikacji dołączony do przeglądarki Mozilla Firefox
https://curl.haxx.se/docs/caextract.html
Zalecam otwarcie tego cacert.pem
pliku w edytorze tekstu, ponieważ będziemy musieli dodać nasz samopodpisany CA do tego pliku.
Certyfikaty to dokument zgodny ze standardem X.509, ale można je zakodować na dysk na kilka sposobów. Poniższy artykuł jest dobrą lekturą, ale w krótkiej wersji mamy do czynienia z kodowaniem base64, które często jest nazywane PEM w rozszerzeniach plików. Zobaczysz, że ma format:
----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
Uzyskanie naszego certyfikatu z podpisem własnym
Poniżej znajduje się kilka opcji, jak uzyskać nasz certyfikat z podpisem własnym:
- Poprzez OpenSSL CLI
- Za pośrednictwem przeglądarki
- Za pomocą skryptów w języku Python
Uzyskaj nasz certyfikat z podpisem własnym przez 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
Uzyskaj nasz urząd certyfikacji z podpisem własnym za pośrednictwem przeglądarki
Dzięki tej odpowiedzi i powiązanemu blogowi pokazuje kroki (w systemie Windows), jak wyświetlić certyfikat, a następnie skopiować do pliku przy użyciu opcji kodowania base64 PEM.
Skopiuj zawartość tego wyeksportowanego pliku i wklej go na końcu cacerts.pem
pliku.
Dla spójności zmień nazwę tego pliku cacerts.pem
-> ca-bundle.crt
i umieść go w łatwym miejscu, na przykład:
%USERPROFILE%\certs\ca-bundle.crt
$HOME/certs/cabundle.crt
Uzyskaj nasz urząd certyfikacji z podpisem własnym za pośrednictwem języka Python
Dzięki wszystkim genialnym odpowiedziom w:
Jak uzyskać certyfikat SSL odpowiedzi z żądań w Pythonie?
Złożyłem poniższe, aby spróbować pójść o krok dalej.
https://github.com/neozenith/get-ca-py
Wreszcie
Ustaw konfigurację w pip i conda, aby wiedziała, gdzie znajduje się ten magazyn urzędu certyfikacji z naszym dodatkowym urzędem certyfikacji z podpisem własnym.
pip config set global.cert %USERPROFILE%\certs\ca-bundle.crt
conda config --set ssl_verify %USERPROFILE%\certs\ca-bundle.crt
LUB
pip config set global.cert $HOME/certs/ca-bundle.crt
conda config --set ssl_verify $HOME/certs/ca-bundle.crt
NASTĘPNIE
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'
Bibliografia