从服务器xamarin.android收到的证书无效

所以这让我疯狂了一天。 我正在尝试与xamarin.android上的REST API交谈但由于某种原因我收到此错误:

 InnerException {Mono.Security.Protocol.Tls.TlsException:从服务器收到的证书无效。 错误代码:0xoffffffff.Handshake.Client.TlsServerCertificate.RemoteValidation(Mono.Security.Protocol.Tls.ClientContext上下文,AlertDescription描述)[0x00000]中的错误代码:0xffffffff800b010a:0:Mono.Security.Protocol.Tls。 Handshake.Client.TlsServerCertificate.validateCertificates(Mono.Security.X509.X509CertificateCollection证书)[0x00000] in:0 at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1()[0x00000] in:0 at Mono。 Security.Protocol.Tls.Handshake.HandshakeMessage.Process()[0x00000] in:0 at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage(Mono.Security.Protocol.Tls.TlsStream handMsg)[0x00000] in:0 at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback(IAsyncResult asyncResult)[0x00000] in:0} Mono.Security.Protocol.Tls.TlsException 

经过一些研究后,我发现这与我正在谈论的服务器丢失的证书有关(如果我错了,请纠正我)。 所以我将SSL证书添加到Mac上的钥匙串中。 我还运行了Mozilla命令来安装默认证书。

不幸的是,这仍然无效。 在Windows上,与API的连接就像魅力一样。 从我读到的这是因为Windows有自己的CA商店和一些默认证书。

我遇到了和你一样的问题,在我的情况下,我确实弄清楚我有一个证书名称 – 错误匹配。 我不知道如何解决的问题,因为我不是我的服务器,而是请求数据。

到目前为止我使用的开发解决方案是压缩所有SLL,并使用以下代码接受所有SLL:

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback ( (srvPoint, certificate, chain, errors) => true ); 

或者更短一点

 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); 

但是,请注意,这不是问题的解决方案,而只是一个解决方案,因此您可以继续开发。

我希望这会帮助你,你现在可以了解这个令人讨厌的例外:-)