Самозаверяющие центры сертификации pip
/conda
После тщательного документирования аналогичной проблемы с Git ( как я могу заставить git принимать самоподписанный сертификат? ), Мы снова находимся за корпоративным брандмауэром с прокси-сервером, который дает нам «атаку» MitM, которой мы должны доверять, и:
НИКОГДА не отключайте проверку SSL!
Это создает плохую культуру безопасности. Не будь таким человеком.
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
Но где мы ca-bundle.crt
?
Получите обновленный пакет CA
cURL публикует отрывок из центров сертификации, входящих в состав Mozilla Firefox.
https://curl.haxx.se/docs/caextract.html
Я рекомендую вам открыть этот cacert.pem
файл в текстовом редакторе, так как нам нужно будет добавить в этот файл самозаверяющий ЦС.
Сертификаты - это документ, соответствующий X.509, но их можно закодировать на диск несколькими способами. Приведенная ниже статья хорошо читается, но краткая версия заключается в том, что мы имеем дело с кодировкой base64, которая часто называется PEM в расширениях файлов. Вы увидите, что он имеет формат:
----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
Получение нашего самоподписанного сертификата
Ниже приведены несколько вариантов получения нашего самоподписанного сертификата:
- Через OpenSSL CLI
- Через браузер
- С помощью сценариев Python
Получите наш самоподписанный сертификат с помощью 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
Получите наш самозаверяющий центр сертификации через браузер
Благодаря этому ответу и связанному блогу он показывает шаги (в Windows), как просмотреть сертификат, а затем скопировать его в файл с помощью опции кодирования base64 PEM.
Скопируйте содержимое этого экспортированного файла и вставьте его в конец cacerts.pem
файла.
Для единообразия переименуйте этот файл cacerts.pem
-> ca-bundle.crt
и поместите его в удобное место, например:
%USERPROFILE%\certs\ca-bundle.crt
$HOME/certs/cabundle.crt
Получите наш самозаверяющий центр сертификации через Python
Спасибо всем блестящим ответам:
Как получить ответный SSL-сертификат на запросы в Python?
Я собрал следующее, чтобы попытаться сделать еще один шаг вперед.
https://github.com/neozenith/get-ca-py
в заключение
Установите конфигурацию в pip и conda, чтобы он знал, где находится это хранилище CA с нашим дополнительным самозаверяющим CA.
pip config set global.cert %USERPROFILE%\certs\ca-bundle.crt
conda config --set ssl_verify %USERPROFILE%\certs\ca-bundle.crt
ИЛИ ЖЕ
pip config set global.cert $HOME/certs/ca-bundle.crt
conda config --set ssl_verify $HOME/certs/ca-bundle.crt
ТОГДА
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'
Рекомендации