【问题标题】:Can not download dependencies无法下载依赖项
【发布时间】:2020-03-28 19:44:46
【问题描述】:

当我键入命令 go build 时,我有一个项目具有来自 bitbucket 上私有存储库的多个依赖项。我收到此错误

无法识别的导入路径“bitbucket.xxx.xx/xx/x”x509:证书由未知机构签名

我已经尝试了几种方法,例如添加令牌

git config --global http.extraheader 令牌

配置成 ssh

git config --global url."git@bitbucket.org:".insteadOf "https://bitbucket.org/"

但它不起作用。

【问题讨论】:

  • a) bitbucket.xxx.xx != bitbucket.org b) 您的 bitbucket 服务器使用自签名证书。回到旧网址并使用git config http.sslVerify false

标签: git go bitbucket


【解决方案1】:

关于使用 HTTPS URL,请注意 HTTP 传输可能存在分配器/释放器不匹配的问题,该问题已在 Git 2.25(2020 年第一季度)中得到纠正。

因此,如果您使用的是 Git 2.24,http.extraheader 无论如何都不会工作。

参见Johannes Schindelin (dscho)commit 4d17fd2(2019 年 11 月 6 日)。
(由 Junio C Hamano -- gitster -- 合并于 commit bad5ed3,2019 年 12 月 1 日)

remote-curl:使用自定义分配器解开 http.extraHeader

签字人:约翰内斯·辛德林

93b980e58f5("http: use xmalloc with cURL", 2019-08-15, Git v2.24.0-rc0 -- merge列在batch #3)中,我们开始要求cURL使用xmalloc(),如果使用 nedmalloc 编译,这意味着隐含的分配器与系统分配器不同。

这意味着所有 cURL 的分配和释放现在 _need_ 以使用该分配器。

但是,http_options() 函数使用 slist_append() 添加任何已配置的额外 HTTP 标头 _before_ 要求 cURL 使用 xmalloc(),而 http_cleanup() 将释放它们 _afterwards_, 即存在在自定义分配器中,cURL 会尝试使用错误的分配器来释放内存。

修复此问题的幼稚尝试会将调用转移到 curl_global_init() _before_ 解析配置(即在调用 slist_append() 之前)。

但是,这不起作用,因为我们 _also_ 解析配置设置 http.sslbackend,如果找到,调用 curl_global_sslset()必须curl_global_init() 之前调用,详情请参阅:https://curl.haxx.se/libcurl/c/curl_global_sslset.html

所以让我们改为让配置解析完全独立于 cURL 的数据结构。顺便说一句,这比它引入的多删除了两行,这很好。


对于自签名证书,全局禁用 SSL 验证可能会被视为安全风险,应仅用于测试。

Referencing the self-signed certificate by GIT_SSL_CAINFO 更安全。

【讨论】:

    猜你喜欢
    • 2013-05-22
    • 2020-07-06
    • 2021-03-09
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    相关资源
    最近更新 更多