【问题标题】:How can I skip SSL verification using libgit2sharp?如何使用 libgit2sharp 跳过 SSL 验证?
【发布时间】:2015-01-30 09:32:11
【问题描述】:

我是 libgit2sharp 的新手(和一般的 git)。我正在尝试编写一个以统一方式处理多个存储库的小程序。但是,在尝试停用 SSL 验证时,我遇到了障碍。该库似乎没有提供一种简单的方法来做到这一点。我找到了一个分支(似乎可以解决问题)并从there复制了一些代码

我当前的代码如下所示(我已经删除了个人资料):

static void Main(string[] args)
        {
//Additional code
            RemoteCertificateValidationCallback certificateValidationCallback = (sender, certificate, chain, errors) => { return true; };
            ServicePointManager.ServerCertificateValidationCallback = certificateValidationCallback;
           GlobalSettings.RegisterSmartSubtransport<MockSmartSubtransport>("https");
//Additional code end
          //  Repository rep = new Repository(@"workingdirpath");
            Repository.Clone("url.git", "workingdirpath", new CloneOptions
            {
                CredentialsProvider = new CredentialsHandler(getCredentials),
                Checkout = true,
            });
            //Remote remote = rep.Network.Remotes.Add("master", "url.git");
            //rep.Network.Pull(new Signature("me", "me@company.de", new DateTimeOffset(DateTime.Now.AddDays(-2))), new PullOptions
            //    {
            //        FetchOptions = new FetchOptions { CredentialsProvider = new CredentialsHandler(getCredentials), TagFetchMode = TagFetchMode.Auto },
            //    });


        }

        private static Credentials getCredentials(string url, string usernameFromUrl, SupportedCredentialTypes types)
        {
            return new UsernamePasswordCredentials
            {
                Username = "myaccount",
                Password = "mypass",
            };
        }

“MockSmartSubtransport”类可以在链接分支中找到。

我的问题是,代码似乎可以工作(它似乎禁用了 SSL 验证),但我仍然收到“{”远程服务器返回错误:(401)未授权。“}”服务器异常.如果没有其他代码,我会从服务器得到:“ {"user cancelled certificate check: "}"。

在调试完这件事后,在我看来,我的凭据的委托永远不会被调用(尽管在尝试使用任一操作时它已注册为回调)。我通过 Chrome 登录服务器并使用 TortoiseGit 提交,检查了用户名/密码是否正确。

目前我不确定 SSL 是否仍然是问题或其他问题。

有什么想法吗?如果我对问题不够具体,我会尝试提供更多信息(请询问)。

【问题讨论】:

  • 您一直提到 SSL 是一个问题,但随后您说您的问题是您无法对服务器进行身份验证。由于这是两件完全不同的事情,您能否具体说明您目前遇到的问题是哪一件?

标签: libgit2 libgit2sharp


【解决方案1】:

在调试完这件事后,在我看来,我的凭据代表永远不会被调用

没有。他们没有,因为您已经注册了自己的子传输。在不确切知道自己在做什么的情况下,这不是应该做的事情。这不是针对 SSL 证书之类的琐碎小事,而是针对当您拥有自己想要使用的完整现有 HTTP 堆栈并且根本无法使用 LibGit2Sharp 中包含的堆栈时。

如果您正在尝试使用自己的子传输来解决一个非常简单的问题,那么 它不会。并且拉出一个测试并试图让它真正起作用很可能会失败。

如果您需要关闭 SSL 验证,请使用 http.sslVerify 配置设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 2012-06-30
    相关资源
    最近更新 更多