gpt4 book ai didi

wcf - Xamarin Cycle 8 中的 SSL 证书验证失败(在 Android 和 iOS 上)

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:52 24 4
gpt4 key购买 nike

我们最近将我们的 Xamarin 工具更新为 Cycle 8 .

在更新后执行的例行测试中,我们很快注意到对我们基于 WCF 的服务器组件的所有 HTTPS 请求都失败了。我们仍然有旧版本的设备,它们工作正常。新编译的版本都连接不上。

连接异常总是归结为 Mono.Security.Protocol.Tls.TlsException从服务器收到无效证书(错误代码:0xffffffff800b010f)。

调查

为了调查,我们定义了一个 ServerCertificateValidationCallback并查看了 SslPolicyErrors .我们注意到:

  • 在 Android 上,我们总是得到 SslPolicyErrors.RemoteCertificateNameMismatch
  • 在 iOS 上,我们总是得到 SslPolicyErrors.RemoteCertificateChainErrors

我们在几个域上对此进行了测试,错误总是如上所列。但是,这些域提供的证书(您也可以在 ServerCertificateValidationCallback 中看到)都是正确且有效的。

我只能假设它们是有效的,因为旧的应用程序仍然可以连接,因为在浏览器中打开这些 URL 表明证书没问题,并且因为 SSL Labs 等测试工具为这些领域打分 A/A+。

我们尝试了什么

Google 搜索发现了一些建议更改我们使用的 HTTP API 的帖子。但是,连接到 WCF 服务器的代码是使用 ServiceModel.ClientBaseBasicHttpBinding 自动生成的 Web 引用。我不知道这背后使用的是什么 HTTP API,而且我认为我们无法轻易更改它。无论如何,我认为这应该开箱即用,就像更新之前一样。

在此 Xamarin 发布周期中,TLS API 发生了一些变化。其他一些 Xaramin 论坛帖子建议更改 iOS 构建选项SSL/TLS 实现HttpClient 实现。我们尝试了这些的几种排列,但它们都产生了相同的错误。我们对 Android HttpClient Implementation 设置进行了同样的尝试。没有结果。

解决方法

所以暂时我们关闭了证书验证:

ServicePointManager.ServerCertificateValidationCallback += () =>
{
return true;
};

有其他人遇到过这种情况吗?有人有解决办法吗?我们做错了什么吗?

编辑

这是一个 Mono.Security 中的错误。参见 here获取官方错误报告。

最佳答案

对于交叉引用,现在已针对此“从服务器收到的无效证书”问题提交了一个错误,以供 Mono 团队调查:https://bugzilla.xamarin.com/show_bug.cgi?id=44708 .

此错误会影响 Mono、Xamarin.Android、Xamarin.iOS 和 Xamarin.Mac。

关于wcf - Xamarin Cycle 8 中的 SSL 证书验证失败(在 Android 和 iOS 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39595422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com