我最近开始使用LibGit2Sharp并且能够成功开始使用它。但是,我遇到的一个问题是我无法解决与SSL验证相关的问题,与one非常相似。对于我的一个场景,我需要跳过SSL验证。
尝试此方案时,我收到以下异常。
用户取消了证书检查:
我尝试使用上面链接中提到的解决方案,如下所示。
RemoteCertificateValidationCallback certificateValidationCallback = (sender, certificate, chain, errors) => { return true; };
ServicePointManager.ServerCertificateValidationCallback = certificateValidationCallback;
GlobalSettings.RegisterSmartSubtransport<MockSmartSubtransport>("https");
我在执行git操作之前放置了上面提到的代码。
我看到调用自定义certificateValidationCallback。但是,之后git命令失败并出现以下异常,“远程服务器返回错误:(401)未经授权。”
此问题的任何解决方案?
答案 0 :(得分:1)
对于我的一个场景,我需要跳过SSL验证。
然后使用http.sslVerify
配置设置。如果这不起作用,请在LibGit2Sharp中提出问题。但是不要试图使用你自己的子运输。
如果不确切知道自己在做什么,这不是应该做的事情。这不适用于像SSL证书这样的小事,这适用于你想要使用自己完整的现有HTTP堆栈而你根本无法使用LibGit2Sharp中包含的那个。
如果您正在尝试思考可能使用您自己的子运输将解决一个非常简单的问题,那么它将不会。拉出测试并尝试使其实际工作可能会失败。现在你负责身份验证和SSL处理等所有事情。
相反,请使用http.sslVerify
配置设置关闭SSL验证。
答案 1 :(得分:0)
目前不支持跳过TLS证书检查。 libgit2用于表示http.sslverify
,但是它被一个回调替换,以便让调用者了解他们所连接的内容。此回调允许用户允许连接继续或中止连接。遗憾的是,目前还没有在libgit2sharp中实现。
正如爱德华所说,替换整个HTTP堆栈并不会解决太多问题,特别是当它是一个假名的时候。