虽然我可以通过向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
来直接修改配方,但这显然不是可行的解决方案。
如何解决?我宁愿不禁用证书验证,但现在会为此解决。
答案 0 :(得分:0)
您需要在Python requests
软件包CA捆绑包中包括ROOT(不是非根祖先)证书,或者创建一个包含根证书并使用REQUESTS_CA_BUNDLE
环境的新CA捆绑包变量。