Authentication Xamarin客户端在调用StartAsync()方法时获取“证书\验证\失败”的信号器

Authentication Xamarin客户端在调用StartAsync()方法时获取“证书\验证\失败”的信号器,authentication,xamarin,exception,ssl-certificate,signalr,Authentication,Xamarin,Exception,Ssl Certificate,Signalr,从我的Xamarin客户端调用SignalR StartAsync让我感到: [ERROR] FATAL UNHANDLED EXCEPTION: System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.Security.Authentication.AuthenticationException: Authenti

从我的Xamarin客户端调用SignalR StartAsync让我感到:

[ERROR] FATAL UNHANDLED EXCEPTION: System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception. ---> Mono.Btls.MonoBtlsException: Ssl error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED
有人能帮我验证一下这个证书吗

以下是堆栈跟踪:


[错误]致命的未处理异常:System.Net.Http.HttpRequestException:无法建立SSL连接,请参阅内部异常。-->System.Security.Authentication.AuthenticationException:身份验证失败,请参阅内部异常。-->Mono.Btls.MonobtlException:Ssl错误:1000007d:Ssl例程:OPENSSL\u内部:证书\u验证\u失败 03-21 23:59:57.526 E/mono rt 6307:at/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/boringssl/ssl/handshake_client.c:1132 03-21 23:59:57.526 E/mono rt 6307:at/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/mcs/class/System/mono.Btls/MonoBtlsContext.cs:220中的mono.Btls.MonoBtlsContext.ProcessHandshake[0x00042] 03-21 23:59:57.526 E/mono rt 6307:at mono.Net.Security.MobileAuthenticatedStream.ProcessHandshake mono.Net.Security.AsyncOperationStatus,System.Boolean在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/mcs/class/System/mono.Net.Security/MobileAuthenticatedStream.cs:840中重新协商[0x000da] 03-21 23:59:57.526 E/mono rt 6307:at包装器远程调用,检查mono.Net.Security.MobileAuthenticatedStream.ProcessHandshakeMono.Net.Security.AsyncOperationStatus,bool 03-21 23:59:57.526 E/mono rt 6307:at mono.Net.Security.asynchhandshakerequest.Run mono.Net.Security.asynchOperationStatus[0x00000]in/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/mcs/class/System/mono.Net.Security/asynchprotocolrequest.cs:289 03-21 23:59:57.526 E/mono rt 6307:at/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/mcs/class/System/mono.Net.Security/AsyncProtocolRequest.cs:223中的mono.Net.Security.AsyncProtocolRequest.ProcessOperation.Threading.CancellationToken取消令牌取消令牌[0x000fc] 03-21 23:59:57.526 E/mono rt 6307:-内部异常堆栈跟踪结束-- 03-21 23:59:57.526 E/mono rt 6307:at mono.Net.Security.MobileAuthenticatedStream.ProcessAuthenticationSystem.Boolean同步运行,mono.Net.Security.MonoSslAuthenticationOptions选项,System.Threading.CancellationToken CancellationToken[0x0025c]在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/mcs/class/System/mono.Net.Security/MobileAuthenticatedStream.cs:406中 03-21 23:59:57.526 E/mono rt 6307:at System.Net.Http.ConnectHelper.EstablishSLConnectionAsyncCore System.IO.Stream、System.Net.Security.SslClientAuthenticationOptions、sslOptions、System.Threading.CancellationToken CancellationToken[0x0007b]在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/ConnectHelper.cs:165中 03-21 23:59:57.526 E/mono rt 6307:-内部异常堆栈跟踪结束-- 03-21 23:59:57.526 E/mono rt 6307:at System.Net.Http.ConnectHelper.EstablishLConnectionAsyncCore System.IO.Stream,System.Net.Security.SslClientAuthenticationOptions sslOptions,System.Threading.CancellationToken CancellationToken[0x000f6]在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/ConnectHelper.cs:176中 03-21 23:59:57.526 E/mono rt 6307:at System.Threading.Tasks.ValueTask1[TResult].在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/Common/src/CoreLib/System/Threading/Tasks/ValueTask.cs:813中获取结果[0x0001b] 03-21 23:59:57.526 E/mono rt 6307:at System.Net.Http.HttpConnectionPool.CreateConnectionAsync System.Net.Http.HttpRequestMessage请求,System.Threading.CancellationToken CancellationToken[0x002d8]在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:394中 03-21 23:59:57.526 E/mono rt 6307:at System.Threading.Tasks.ValueTask1[TResult].在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/Common/src/CoreLib/System/Threading/Tasks/ValueTask.cs:813中获取结果[0x0001b] 03-21 23:59:57.526 E/mono rt 6307:at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync System.Threading.Tasks.ValueTask`1[TResult]creationTask[0x000a2]在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:529中

以下是例外情况的详细信息:

System.Net.Http.HttpRequestException
Message=无法建立SSL连接,请参阅内部异常。 Source=mscorlib 堆栈跟踪: 位于System.Net.Http.ConnectHelper.Estab 在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/ConnectHelper.cs:176中的lishslconnectionasynchcore System.IO.Stream、System.Net.Security.ssclientauthenticationoptions、System.Threading.CancellationToken取消令牌取消令牌[0x000f6] 在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/Common/src/CoreLib/System/Threading/Tasks/ValueTask.cs:813中的System.Threading.Tasks.ValueTask1[TResult].get_Result[0x0001b] 在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:394中的System.Net.Http.HttpConnectionPool.CreateConnectionAsync System.Net.Http/src/System/Net/Net/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs请求消息请求中 在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/Common/src/CoreLib/System/Threading/Tasks/ValueTask.cs:813中的System.Threading.Tasks.ValueTask1[TResult].get_Result[0x0001b] 在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:529中的System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync System.Threading.Tasks.ValueTask1[TResult]creationTask[0x000a2] 在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/Common/src/CoreLib/System/Threading/Tasks/ValueTask.cs:813中的System.Threading.Tasks.ValueTask1[TResult].get_Result[0x0001b] 位于System.Net.Http.HttpConnectionPool.SendWithRetryAsync System.Net.Http.HttpRequestMessage请求、System.Boolean doRequestAuth、System.Threading.CancellationToken CancellationToken[0x0003f]在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:284中 在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/System.Net.Http.HttpRequestMessage请求中,System.Threading.CancellationToken CancellationToken[0x00070]位于/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Net/System/Net/Http/soc 在Microsoft.AspNetCore.Http.Connections.Client.Internal.AccessTokenHttpMessageHandler.SendAsync System.Net.Http.HttpRequestMessage请求中,System.Threading.CancellationToken CancellationToken[0x000ff]位于:0 在Microsoft.AspNetCore.Http.Connections.Client.Internal.LoggingHttpMessageHandler.SendAsync System.Net.Http.HttpRequestMessage请求中,System.Threading.CancellationToken CancellationToken[0x00095]位于:0 在System.Net.Http.HttpClient.FinishSendAsyncUnbuffered System.Threading.Tasks.Task1[TResult]sendTask、System.Net.Http.HttpRequestMessage请求、System.Threading.CancellationTokenSource cts、System.Boolean Dispositions[0x000b3]在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:531中 位于:0中的Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.NegotiateAsync System.Uri url、System.Net.Http.HttpClient-HttpClient、Microsoft.Extensions.Logging.ILogger记录器、System.Threading.CancellationToken CancellationToken[0x00257] 在Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.GetNegotiationResponseAsync System.Uri Uri中,System.Threading.CancellationToken CancellationToken[0x00080]位于:0 在Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.SelectAndStartTransport Microsoft.AspNetCore.Connections.TransferFormat TransferFormat、System.Threading.CancellationToken CancellationToken[0x00180]中,输入:0 位于Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.StartAsyncCore Microsoft.AspNetCore.Connections.TransferFormat TransferFormat,System.Threading.CancellationToken CancellationToken[0x0011e]中:0 位于0中的System.Threading.Tasks.ForceAsyncWaiter.GetResult[0x0000c]处 在Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.StartAsync Microsoft.AspNetCore.Connections.TransferFormat TransferFormat、System.Threading.CancellationToken CancellationToken[0x00091]中:0 在Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionFactory.ConnectAsync System.Net.EndPoint端点处,System.Threading.CancellationToken CancellationToken[0x00114]位于:0 在Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionFactory.ConnectAsync System.Net.EndPoint端点处,System.Threading.CancellationToken CancellationToken[0x001bf]位于:0 在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/external/corefx/src/Common/src/CoreLib/System/Threading/Tasks/ValueTask.cs:813中的System.Threading.Tasks.ValueTask1[TResult].get_Result[0x0001b] 位于Microsoft.AspNetCore.signal.Client.HubCon 0中的Connection.StartAsyncCore System.Threading.CancellationToken CancellationToken[0x000a5] 位于Microsoft.AspNetCore.signal.Client.HubConnection.StartAsyncInner System.Threading.CancellationToken CancellationToken[0x0019e]中:0 位于0中的System.Threading.Tasks.ForceAsyncWaiter.GetResult[0x0000c]处 位于Microsoft.AspNetCore.signal.Client.HubConnection.StartAsync System.Threading.CancellationToken CancellationToken[0x00091]的:0 在C:\Users\sipfe\source\repos\HostelProj v2-RealTime\MobileApp\MobileApp\HubService.sendmages MobileApp.Models.Message[0x00042]中的MobileApp.Services.HubService.sendmages 在C:\Users\sipfe\source\repos\HostelProj v2-RealTime\MobileApp\MobileApp\ViewModels\ConversationDetailViewModel.executesend命令[0x00155]中的MobileApp.ViewModels.ConversationDetailViewModel.cs:83 在C:\Users\sipfe\source\repos\HostelProj v2-RealTime\MobileApp\MobileApp\ViewModels\ConversationDetailViewModel.b_u34_0[0x00028]中的MobileApp.ViewModels.ConversationDetailViewModel.cs:55 在/Users/builder/jenkins/workspace/archive mono/2019-08/android/release/mcs/class/referencesource/mscorlib/System/Runtime/CompilerServices/asynchmethodbuilder.cs:1021中的System.Runtime.CompilerServices.asynchmethodbuildercore+c.b\u7\u0 System.Object状态[0x00000] 在Android.App.SyncContext+c_uuuu显示class2_0.b_uu0[0x00000]中:0 在Java.Lang.Thread+RunnableImplementor.Run[0x00008]中:0 在Java.Lang.IRunnableInvoker.n_运行System.IntPtr jnienv,System.IntPtr native__该[0x00009]位于:0 在包装器中,动态方法Android.Runtime.DynamicMethodNameCounter.70intptr,intptr


谢谢大家

通过搜索堆栈溢出找到答案,以下是解决方案的链接:

刚刚在我的HubConnectionBuilder中添加了一些选项,效果很好

 HubConnection = new HubConnectionBuilder()
            .WithUrl($"https://10.0.2.2:5001/chatHub", (opts) =>
            {
                opts.HttpMessageHandlerFactory = (message) =>
                {
                    if (message is HttpClientHandler clientHandler)
                        // bypass SSL certificate
                        clientHandler.ServerCertificateCustomValidationCallback +=
                            (sender, certificate, chain, sslPolicyErrors) => { return true; };
                    return message;
                };
            })
            .Build();

通过搜索堆栈溢出来查找,以下是解决方案的链接:

刚刚在我的HubConnectionBuilder中添加了一些选项,效果很好

 HubConnection = new HubConnectionBuilder()
            .WithUrl($"https://10.0.2.2:5001/chatHub", (opts) =>
            {
                opts.HttpMessageHandlerFactory = (message) =>
                {
                    if (message is HttpClientHandler clientHandler)
                        // bypass SSL certificate
                        clientHandler.ServerCertificateCustomValidationCallback +=
                            (sender, certificate, chain, sslPolicyErrors) => { return true; };
                    return message;
                };
            })
            .Build();

无法建立SSL连接-您的服务器设置是否具有SSL证书?Hello@Jason I我的服务器我刚刚安装了signalR nugget软件包,添加到Startup services.signalR和路由,并添加了一个集线器类,如教程中所示。所以回答你的问题,我想我没有ssl证书,但我不确定。你能告诉我在哪里可以看到我有一个吗?开始时,我必须添加一个自签名证书,以便从浏览器调用我的服务器,但这是一个不同的证书,对吗?注意。无法建立SSL连接-您的服务器设置是否具有SSL证书?Hello@Jason I我的服务器我刚刚安装了signalR nugget软件包,添加到Startup services.signalR和路由,并添加了一个集线器类,如教程中所示。所以回答你的问题,我想我没有ssl证书,但我不确定。你能告诉我在哪里可以看到我有一个吗?开始时,我必须添加一个自签名证书,以便从浏览器调用我的服务器,但这是一个不同的证书,对吗?谢谢分享。别忘了接受答案。@WendyZang MSFT如果对你有帮助,请你投票好吗?谢谢分享。别忘了接受答案。@WendyZang MSFT如果对你有帮助,请你投票好吗?非常感谢。