Где шпагат ищет сертификаты?
У меня есть личный репозиторий Python, настроенный с помощью https, и я могу загрузить в него следующую команду:
twine upload <dist> -r <my_server> --cert <path/to/certfile>
Тем не менее, я хотел бы иметь возможность загружать без явного указания местоположения сертификата CA. Я полагаю, что я установил сертификат CA в правильном месте для моей системы (используя Руководство по добавлению центра сертификации в centos7? И проверил его с помощью wget), но мне все еще нужно вызвать необработанный путь.
Как я могу заставить шпагат использовать мой альтернативный сертификат CA по умолчанию?
0 ответов
Twine зависит от запросов, которые, в свою очередь, зависят от Certifi (https://certifi.io/, который фактически извлекается из запросов), а Certifi просматривает и проверяет только свою собственную "тщательно подобранную коллекцию корневых сертификатов", дефолт:
>>> import certifi
>>> certifi.where()
'/usr/local/lib/python2.7/site-packages/certifi/cacert.pem'
Что не отличается от SSL.
Вы можете установить TWINE_CERT
или REQUESTS_CA_BUNDLE
переменная окружения на путь ваших сертификатов CA, первая повлияет только на Twine, вторая повлияет на все, что зависит от запросов.
Выполните следующее, чтобы определить, где Python ищет ваши сертификаты CA:
>>> import ssl
>>> ssl.get_default_verify_paths().capath
/usr/local/etc/openssl/certs
Затем поместите свой пользовательский сертификат в этот каталог.