Как доверять сертификатам для setuptools - PullRequest
0 голосов
/ 25 апреля 2019

Мне было довольно сложно выяснить, как получить доверие к корневому и промежуточному ЦС для загрузки артефактов из моего репозитория Nexus с помощью setuptools Python v3.6.x.

Большинство, если не все, ответов на этот вопрос предлагают обойти SSL. Это не вариант для меня, а огромная ошибка в безопасности. Кроме того, насколько я могу судить, в setuptools нет встроенных опций конфигурации, позволяющих сделать это без специального кодирования.

1 Ответ

0 голосов
/ 25 апреля 2019

Отказ от ответственности : это то, как я заставил это работать. Это не должно быть концом, все должно быть всем решением, и я не думаю, что это должно быть. ИМХО setuptools должен быть настраиваемым или работать иначе, чем он. Если у вас есть другое решение, , пожалуйста, опубликуйте его!

Это заняло чтение кода setuptools в файле ssl_support.py. В моем случае мне нужно было доверять обоим сертификатам. Важные биты ниже:

#setuptools/ssl_support.py
...
cert_paths = """
/etc/pki/tls/certs/ca-bundle.crt
/etc/ssl/certs/ca-certificates.crt
/usr/share/ssl/certs/ca-bundle.crt
/usr/local/share/certs/ca-root.crt
/etc/ssl/cert.pem
/System/Library/OpenSSL/certs/cert.pem
/usr/local/share/certs/ca-root-nss.crt
/etc/ssl/ca-bundle.pem
""".strip().split()
...
def find_ca_bundle():
    """Return an existing CA bundle path, or None"""
    extant_cert_paths = filter(os.path.isfile, cert_paths)
    return (
        get_win_certfile()
        or next(extant_cert_paths, None)
        or _certifi_where()
    )

Этот жестко запрограммированный список путей к файлам фильтруется в порядке и используется в качестве аргумента для вызова urllib.request.build_opener для выполнения запроса. Вам нужно найти существующий first путь к файлу и добавить свои сертификаты в этот файл. В моем случае это было /etc/ssl/certs/ca-certificates.crt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...