【问题标题】:How to skip SSL verification in LibGit2Sharp如何在 LibGit2Sharp 中跳过 SSL 验证
【发布时间】:2015-07-01 15:40:06
【问题描述】:

我最近开始使用 LibGit2Sharp 并且能够成功开始使用它。但是,我遇到了一个我无法解决的与 SSL 验证相关的问题,与one 非常相似。对于我的一种情况,我需要跳过 SSL 验证。

我在尝试这种情况时遇到以下异常。

用户取消证书检查:

我尝试使用上面链接中提到的解决方案,如下所示。

RemoteCertificateValidationCallback certificateValidationCallback = (sender, certificate, chain, errors) => { return true; };
ServicePointManager.ServerCertificateValidationCallback = certificateValidationCallback;
GlobalSettings.RegisterSmartSubtransport<MockSmartSubtransport>("https");

我在执行 git 操作之前放置了上面提到的代码。

我看到自定义的 certificateValidationCallback 被调用。但是,之后 git 命令失败并出现以下异常,“远程服务器返回错误:(401)未授权。”

这个问题有什么解决办法吗?

【问题讨论】:

    标签: libgit2sharp


    【解决方案1】:

    对于我的一种情况,我需要跳过 SSL 验证。

    然后使用http.sslVerify 配置设置。如果这不起作用,请在 LibGit2Sharp 中提出问题。但不要尝试使用自己的子传输。

    这不是在不知道自己在做什么的情况下应该做的事情。这不是针对 SSL 证书之类的琐碎小事,而是针对当您拥有自己想要使用的完整现有 HTTP 堆栈并且根本无法使用 LibGit2Sharp 中包含的堆栈时。

    如果您正在尝试使用自己的子传输来解决一个非常简单的问题,那么 它不会。拉出一个测试并试图让它真正起作用很可能会失败。现在负责身份验证和 SSL 处理等所有工作。

    改为使用http.sslVerify 配置设置关闭 SSL 验证。

    【讨论】:

    • 感谢爱德华的回复。我会尝试这个选项。我注意到的是,库允许在 repo 克隆一次后设置配置,如下所示。就我而言,我需要禁用 ssl 验证才能克隆到 repo 以解决此问题。另一个选项是全局禁用它。但是,我没有看到任何允许全局设置的库方法。如果您知道,请告诉我。
    • @SachinChandraMohan 不要感谢我,我想我错了,libgit2sharp 不尊重该配置设置。我会进一步调查。
    • 这是将配置设置添加到我之前错过的 repo 的代码。 var localRepo = new Repository(clonedRepoPath)) localRepo.Config.Set("http.sslVerify", "false");
    【解决方案2】:

    目前不支持跳过 TLS 证书检查。 libgit2 曾经尊重http.sslverify,但它被一个回调所取代,以便让调用者了解他们正在连接的内容。此回调允许用户允许连接继续或中止它。不幸的是,它目前没有在 libgit2sharp 中实现。

    正如 Edward 所说,替换整个 HTTP 堆栈并不能解决很多问题,尤其是当它是一个假冒的 so 时。

    【讨论】:

    • 你有参考吗?或者有谁知道有更新吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2017-06-08
    • 2012-06-30
    • 2021-02-08
    • 1970-01-01
    • 2021-07-26
    相关资源
    最近更新 更多