我有一个Xamarin PCL客户端使用带有Letsnecrypt证书的SSL与WebApi后端通信。使用端口号443时,一切正常(URL中没有:443,只有https)。
我出于各种原因无法使用此端口,因此我切换到了8082。现在我在客户端收到以下错误:
错误:SecureChannelFailure(身份验证或解密具有 失败。)
在Mono.Security.Protocol.Tls.SslStreamBase.EndRead中 (System.IAsyncResult asyncResult)[0x00051] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs:883 在Mono.Net.Security.Private.LegacySslStream.EndAuthenticateAsClient (System.IAsyncResult asyncResult)[0x00011] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/Mono.Net.Security/LegacySslStream.cs:475 在Mono.Net.Security.Private.LegacySslStream.AuthenticateAsClient (System.String targetHost, System.Security.Cryptography.X509Certificates.X509CertificateCollection clientCertificates,System.Security.Authentication.SslProtocols enabledSslProtocols,System.Boolean checkCertificateRevocation) [0x00000] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/Mono.Net.Security/LegacySslStream.cs:445 在Mono.Net.Security.MonoTlsStream.CreateStream(System.Byte [] buffer) [0x0001e] in /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/Mono.Net.Security/MonoTlsStream.cs:99
当我在客户端使用浏览器并打开URL时,一切正常。证书已获批准。已经尝试https://www.digicert.com/help/检查证书,一切正常。
我正在使用ModernHttpClient:
client = new HttpClient(new NativeMessageHandler());
我做错了什么?
答案 0 :(得分:0)
我相信这可能是一个Mono bug [1]已修复,但修复程序只发布到我们的Alpha通道。您可以尝试更新到Alpha通道[2]并查看问题是否已解决?
[1] https://bugzilla.xamarin.com/show_bug.cgi?id=46549
[2]切换更新频道:
在Xamarin Studio中,您可以使用Xamarin Studio->检查更新...菜单切换更新频道,在更新频道旁边的下拉菜单中选择稳定,测试版或Alpha,然后单击切换频道按钮。 / p>
在Visual Studio中,导航到菜单Tools-> Options并向下滚动以展开Xamarin部分并选择" Other"。从下拉菜单中选择Stable,Beta或Alpha,然后单击立即检查。如果对该频道的更新可用,您将获得类似于上述Xamarin Studio的对话框。按上述步骤进行。