SourceTree 和 Stash:无法获取本地颁发者证书

Posted

技术标签:

【中文标题】SourceTree 和 Stash:无法获取本地颁发者证书【英文标题】:SourceTree and Stash: Unable to get local issuer certificate 【发布时间】:2014-09-12 08:38:03 【问题描述】:

我们在 Windows 2008R2 服务器上安装了 Atlassian Stash,大部分情况下一切运行良好。我们有一个由本地本地 CA 颁发的 SSL 证书和一个 DNS 条目设置,因此我们可以转到 https://stash/,它工作得非常好,除了在 Firefox 中它会引发警告(相关?)。

使用 Atlassian 的 Sourcetree 时,我们可以导航并选择一个存储库,但是当我们尝试克隆它时,我们会收到以下错误:

致命:无法访问https://user@url/scm/etc/etc.git: SSL 证书问题:无法获取本地颁发者证书

如果我也从 git bash 中尝试,我会得到同样的错误。基于此错误,我尝试following the instructions 将 SSL 证书作为also found on their website 添加到 Git,包括 cmets 中的内容,但无济于事。我已经通过 Firefox 和 MMC 证书管理单元导出了证书,得到了相同的结果并将其放入自己的文件中,与 curl 文件结合使用,无论如何都会出现此错误。我还没有尝试让它与 SSH 密钥一起工作,因为我希望让我的团队更容易做到这一点。

我也尝试使用ssh myserver 并接受连接,然后输入密码并重新启动;还是一样的错误。

我也不想简单地ignore certificate validation,因为那似乎有点毫无意义。

如何使用我们的 CA 颁发的证书进行此操作?

【问题讨论】:

【参考方案1】:

在与直到今天还在工作的同行合作后,我发现我一直只使用服务器本身的证书。我对所有文章的 [错误] 理解是,类似于处理自签名证书,您只需告诉 Git 信任此证书。我们不是这样的。

相反,我应该导出并告诉 Git 信任的是我们域中的根 CA 证书。我发誓我上周早些时候在这一切刚开始时就尝试过,但遗憾的是我不能这样做。

让这对任何发现自己处于我位置的人发出警告!

【讨论】:

谁能给我一个链接来显示如何做到这一点?我尝试按照此处的说明进行操作,但没有任何运气:blogs.msdn.microsoft.com/phkelley/2014/01/20/… 与@jessieloo 相同的问题:“你如何教git 信任(本地)bitbucket 域的根CA 证书?” - 你介意详细说明那个 squid808 吗? 对不起@vrms - 这是很久以前的另一份工作。 IIRC,我遵循了相同的说明,但使用了根 CA 证书。我希望这可以帮助您足够接近!【参考方案2】:

我刚刚禁用了 SSL 证书检查(这对于内部存储库来说很好):

Tools > Options > Git > Disable SSL certificate validation (ticked)

【讨论】:

这违背了 SSL 的目的,并将您暴露给中间人攻击。 @Stoyan 正如我所说,对于内部流量,这很好。如果您有一个内部人员参与中间攻击,那么您遇到的问题比嗅探您的代码提交的人要大得多。如果你是远程贡献,那么就有风险,这可能不是什么大问题,例如,如果它是开源的——可能发生的最坏情况是什么?他们在你的提交中放了一些垃圾,后来的拉取请求被拒绝了。嗯。【参考方案3】:

您需要为您的服务使用完整的链证书,这不仅意味着您的证书,还意味着证书文件中的中间证书和根证书

【讨论】:

【参考方案4】:

Sourcetree > 首选项 > Git 勾选“禁用 SSL 证书验证”:

【讨论】:

以上是关于SourceTree 和 Stash:无法获取本地颁发者证书的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Github Desktop 中运行 stash?

sourcetree本地分支无法显示问题解决方法

怎么用sourcetree获取代码

sourceTree使用教程--拉取获取

Git里面Stash Changes和UnStash Changes使用

SourceTree 将本地已有的git项目推送到远程git仓库