Как я могу настроить Conan для принятия corp CA при использовании conans.tools.download ()? - PullRequest
0 голосов
/ 27 июня 2019

Несмотря на то, что я могу заставить Конана загрузить пакет с пульта, добавив корпоративный сертификат CA в cacert.pem, многие из этих рецептов пакетов используют conans.tools.download() для загрузки исходного кода с внешних сайтов.Кажется, как будто эта функция не использует cacert.pem для своего хранилища сертификатов.

Итак, для простого примера у меня есть conanfile.txt, который выглядит следующим образом:

[requires]
sdl2/2.0.8@bincrafters/stable

Конечно, для Visual Studio 2019 нет двоичного файла sdl2, поэтому мне нужно указать версию компилятора, тип сборки, cppstd (ну, технически, не этот, поскольку SDL2 написан на C) и т. Д., Но в более крупном проекте используется C ++, поэтомуЯ запускаю команду для сборки SDL2:

conan install .. -s compiler.version=16 -s build_type=Debug -s compiler.cppstd=17 --build

Конан прекрасно загружает пакет, так как он уважает Corp CA, который я добавил к cacert.pem, но рецепт пакета использует tools.download() для фактического извлеченияисточник.Это эффектно завершилось этой ошибкой:

ERROR: Error downloading file https://www.libsdl.org/release/SDL2-2.0.8.tar.gz: 'HTTPSConnectionPool(host='www.libsdl.org', port=443): Max retries exceeded with url: /release/SDL2-2.0.8.tar.gz (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)'),))'

Хотя я могу напрямую изменить рецепт, добавив verify=False к вызову загрузки, это, очевидно, не является жизнеспособным решением.

Как это можно исправить?Я бы предпочел не отключать проверку сертификации, но на этом этапе согласился бы.

1 Ответ

0 голосов
/ 28 июня 2019

Вам необходимо включить ROOT (не являющийся предком root) сертификат в пакет CA пакета Python requests или создать новый пакет CA, который включает корневой сертификат и использовать переменную среды REQUESTS_CA_BUNDLE.

...