Установка сертификата Zscaler в Anaconda3

После обязательной установки Zscaler через Компанию моя Anaconda начала выдавать мне ошибку проверки SSL при установке модулей и использовании запросов для получения URL-адресов.

Ошибка (SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] проверка сертификата не удалась: невозможно получить сертификат локального эмитента (_ssl.c:1076)'))': /simple /' some_module '/

SSLError: HTTPSConnectionPool(host='www.amazon.com', port=443): Превышено максимальное количество повторных попыток с URL: / (Вызвано SSLError(SSLError("плохое рукопожатие: Ошибка ([('SSL-подпрограммы', 'tls_process_server_certificate', 'проверка сертификата не удалась')])")))

При выключенном Zscaler все работает отлично, но политика компании этого не допускает...

Я нашел некоторые обходные пути, такие как установка verify на False, но это не то, что я хочу.

Я хочу установить сертификат Zscaler (который мне предоставил наш ИТ-отдел) в Anaconda

Теперь проблема, похоже, в том, что он использует общие сертификаты conda.

import ssl
print(ssl.get_default_verify_paths())

Выходные данные: DefaultVerifyPaths(cafile=None, capath=None, openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='C:\ci\openssl_1581353098519\_h_env\Library/cert.pem', openssl_capath_env='capath_env =', openssl_capath_env \openssl_1581353098519\_h_env\Library/certs')

Любая идея, что я могу сделать, чтобы указать conda на сертификат Zscaler, который у меня есть?

системная информация: Windows 10, Anaconda3 -2020.02, Python 3.7

Заранее большое спасибо

3 ответа

Что вы можете сделать:

  1. Откройте браузер и перейдите на http://www.google.com/.
  2. Рядом с кнопкой перезагрузки страницы вы увидите замок (см. Рисунок ниже). нажмите здесь
  3. Нажмите: Сертификат
  4. Щелкните вкладку: Путь сертификации
  5. Выберите Zsclaer Root CA5 и нажмите кнопку View Certificat.
  6. Щелкните вкладку: Сведения, а затем нажмите кнопку Копировать в файл.
  7. Экспортируйте сертификат, выбрав X.509 (.CER) в кодировке base-64
  8. Выберите путь, по которому сохранить файл
  9. Открыть подсказку Anaconda
  10. conda config -set ssl_verify path_of_the_file_that_you_just_saved

фон

У меня была такая же проблема, но я столкнулся с похожей проблемой на своем рабочем ноутбуке, за исключением того, что Zscaler заблокировал мой трафик curl, git и anaconda. Временное исправление заключалось в отключении проверки SSL, но это приводит к ряду уязвимостей безопасности, таких как атаки «человек посередине».

Из того, что я смог собрать, и моих ограниченных исследований, WSL2 не имеет автоматического способа импорта сертификатов ssl из системы. https://github.com/microsoft/WSL/issues/5134

Решение

Долгосрочное решение — получить сертификат Zscaler и добавить его в файл оболочки. Выполните следующие команды в WSL после получения сертификата и перехода в каталог.

      echo "export SSL_CERT_FILE=<Path to Certificate>/ZscalerRootCA.pem" >> $HOME/.bashrc

который я получил от https://help.zscaler.com/zia/adding-custom-certificate-application-specific-trusted-store#curl-SSL_CERT_FILE У них есть больше команд для других приложений

Если вы используете какие-либо другие оболочки, обязательно измените .bashrcв каталог конфигурации этого файла. В моем случае я использую рыбу, поэтому я заменил $HOME/.bashrcс $HOME/.config/fish/config.fish

      echo "export SSL_CERT_FILE=<Path to Certificate>/ZscalerRootCA.pem" >> $HOME/.config/fish/config.fish

После добавления сертификата обязательно перезагрузите оболочку. В моем случае я запускал по инструкции от jeffmcneil.

      source ~/.config/fish/config.fish

для bash вы хотели бы запустить source ~/.bashrcили же

      . ~/.bashrc

из /questions/28642695/kak-perezagruzitbashrc-ne-vyihodya-iz-sistemyi-i-ne-vhodya-obratno/28642712#28642712

Решение для ОС Windows

После того, как ваш корневой сертификат Zscaler установлен в корневом хранилище доверия Windows, просто установите pip-system-certs преемник python-certifi-win32 , который больше не поддерживается. Оба пакета доступны либо в pypi, либо в conda-forge, поэтому используйте либоpip,conda, илиmambaдля установки pip-system-certs в каждую среду Python, в которой вы используете пакет Requests. Пакет pip-system-certs исправляет сертификаты во время выполнения, чтобы использовать доверенное корневое хранилище Windows. Это решает проблему с пакетом запросов, не прибегая к настройке и/или редактированию ваших файлов.

Решение для Убунту

Скопируйте файл корневого сертификата Zscaler, он должен быть.crtзаканчиваться и быть в формате PEM, чтобы/usr/local/share/ca-certificatesи использоватьsudo update-ca-certificatesобновить свой/etc/ssl/certs/ca-certificates.crtфайл. Однако даже тогда,pip-system-certsне совсем работает, поэтому добавьтеexport $REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crtна ваш.profileи перезапустите вашу оболочку.

Для получения дополнительной информации прочитайте следующее:

ВНИМАНИЕ: я не рекомендую редактировать какие-либо файлы Python. Обратите внимание, что все они связаны, поэтому редактирование одного редактирует все, и ваш решатель mamba/conda может жаловаться, что ваш кеш пакета недействителен, потому что размер файла изменился из-за ваших правок. Посмотрите в каждой папке сред, включая базовую среду, и в базовой среде pkgs/ca-certificates-<date>файлы. В ОС Windows находится в Library\sslвместо . Наконец cacert.pemфайл будет перезаписан, если/когда вы установите или обновите пакет сертификатов Python, поэтому его редактирование на самом деле не идеальное решение. Лучшей альтернативой было бы поместить корневой сертификат Zscaler в новый ssl/папку в вашем домашнем каталоге и установите $REQUESTS_CA_BUNDLEв это место. Если ваша компания использует Zscaler, то я думаю, что это единственный корневой сертификат, который вам нужен.

Другие вопросы по тегам