【问题标题】:How can I configure Conan to accept corp CA when using conans.tools.download()?使用 conans.tools.download() 时如何配置柯南以接受公司 CA?
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-03-19
    • 2019-11-27
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多