【发布时间】:2017-06-25 17:08:34
【问题描述】:
我正在整理一个 Xamarin Android 项目,并尝试构建一个调用 API 的小应用程序。 Xamarin 项目创建了一个 ApiWrapper 类的实例,我在另一个解决方案中拥有该类,该类是进行 Http 调用的原因(不确定这是否重要)。
我在运行时不断获取的堆栈跟踪粘贴在下面:
06-25 12:36:13.696 E/mono-rt (3365): [错误] 致命的未处理异常: System.Net.Http.HttpRequestException:发送时出错 请求
System.Net.WebException: Error: SecureChannelFailure(认证或解密失败。)
System.IO.IOException:身份验证或解密失败。
System.IO.IOException:身份验证或解密失败。
Mono.Security.Protocol.Tls.TlsException:认证或解密失败。
这是我迄今为止尝试过的:
- 我尝试安装 ModernHttpClient 并将 NativeMessageHandler 传递到 HttpClient() 的构造函数中,但没有成功。
- 确保我的应用具有 INTERNET 权限
- 添加了一个自定义验证器类,它返回 true 并被传递到
ServicePointManager.ServerCertificateValidationCallback - 同时运行
mozroots和cert-sync以尝试为该站点提取正确的证书。
另外,为了清楚起见,我有一个测试项目,它仅通过 .NET 的网络堆栈调用相同的 ApiWrapper 类,并且它在加密方面没有问题并且工作正常。
我没有想法,在这里苦苦挣扎。任何建议都非常有帮助!谢谢。
【问题讨论】:
-
您要连接的站点是否仍然启用了 tls1.0?错误听起来像是期待 tls1.1 或 1.2。
-
嗯,我不确定。有什么好工具可以检查网站使用的 tls 版本吗?
-
你可以使用this
-
谢谢!我使用@ganchito55 提到的站点进行了测试,该站点似乎支持 TLS 1.0、1.1 和 1.2。关于为什么会发生这种情况的任何其他想法?
-
您使用自签名证书吗?
标签: c# xamarin https xamarin.android mono