【发布时间】:2019-06-29 01:04:49
【问题描述】:
虽然我可以通过将公司 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
柯南下载包很好,因为它尊重我添加到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 来直接修改配方,但这显然不是一个可行的解决方案。
如何解决这个问题?我不希望禁用认证验证,但此时我会接受。
【问题讨论】:
-
conans.tools.download() 使用请求下载。您是否尝试过添加环境变量 REQUESTS_CA_BUNDLE?您可以尝试任何方法来解决与 SSL 错误 + python 请求相关的问题
-
顺便说一句,您将无法禁用该配方中的验证参数。相关案例:github.com/conan-io/conan/issues/2460#issuecomment-365003032
标签: conan