使用conans.tools.download()时如何配置柯南接受公司CA?

时间:2019-06-27 14:15:47

标签: conan

虽然我可以通过向cacert.pem添加公司CA认证来让Conan从远程下载软件包,但是许多软件包食谱都使用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

柯南可以很好地下载软件包,因为它尊重我添加到cacert.pem的公司CA,但是软件包配方使用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 :(得分:0)

您需要在Python requests软件包CA捆绑包中包括ROOT(不是非根祖先)证书,或者创建一个包含根证书并使用REQUESTS_CA_BUNDLE环境的新CA捆绑包变量。