我有一个ASP.NET 1.1的核心应用程序设置为使用HTTPS和要求客户端证书:ASP.NET核心红隼在Linux从不提示进行客户证书
我运行的应用程序Linux操作系统。
如果我将ClientCertificateMode更改为“AllowCertificates”,那么一切正常,但浏览器从不提示客户端证书。
设置了“RequireCertificate”,我仍然没有得到浏览器提示的证书,并且我在服务器端获得了下面两个例外(两个重复四次),并且没有任何响应返回浏览器:
Microsoft.AspNetCore.Server.Kestrel:错误:ConnectionFilter.OnConnection
System.AggregateException:出现一个或多个错误。 (由于远程方已关闭传输流,认证失败。)---> System.IO.IOException:由于远程方已关闭传输流,认证失败。 在System.Net.Security.SslState.StartReadFrame(字节[]缓冲液,的Int32的ReadBytes,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) ---从先前的位置,其中堆栈跟踪结束异常被抛出--- 在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 在System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult的结果) 在System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func
2 endFunction,Action 1 endAction, Task
1 promise,Boolean requ iresSynchronization) ---在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 从先前的位置堆栈跟踪,其中引发异常--- 结束在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务task) 在Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionFilter.d__3.MoveNext() ---内部异常堆栈跟踪结束--- --->(内部异常#0)System.IO.IOException:身份验证失败,因为远程方关闭了传输流。 at System.Net.Security.SslState.StartReadFrame(Byte [] buffer,Int32 readBytes,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) ---上一个位置的堆栈跟踪结束位置异常被抛出--- 在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 在System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult的结果) 在System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func
2 endFunction,Action 1 endAction, Task
1 promise,Boolean requ iresSynchronization) ---在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 从先前的位置堆栈跟踪,其中引发异常--- 结束在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务task) 在Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionFilter.d__3。的MoveNext()< ---
Microsoft.AspNetCore.Server.Kestrel:错误:ConnectionFilter.OnConnection
System.AggregateException:出现一个或多个错误。 (根据验证过程,远程证书无效。)---> System.Security.Authentication.AuthenticationException:根据验证过程,远程证书无效。 在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken消息,AsyncProtocolRequest asyncRequest,ExceptionDispatchInfo除外) 在System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken消息,AsyncProtocolRequest AsyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte [] incoming,Int32 count,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte [] buffer,Int32 count,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte [] buffer,Int32 readBytes,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte [] buffer,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken消息,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.StartSendBlob(字节[]来电,的Int32计数,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState .ProcessReceivedBlob(字节[]缓冲液,计数的Int32,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.StartReadFrame(字节[]缓冲液,的Int32的ReadBytes,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.StartReceiveBlob(字节[] buffer,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte [] incoming,Int32 count,AsyncProtocolRe任务asyncRequest) 在System.Net.Security.SslState.ProcessReceivedBlob(字节[]缓冲液,计数的Int32,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.StartReadFrame(字节[]缓冲液,的Int32的ReadBytes,AsyncProtocolRequest asyncRequest) System.Net.Security.SslState.StartSendBlob(Byte [] buffer,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte []传入,Int32计数,AsyncProtocolRequest异步请求) at System.Net.Security.SslState.ProcessReceivedBlob(Byte [] buffer,Int32 count,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte [] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) ---从先前的位置堆栈跟踪的结束,其中引发异常--- 在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 在System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult的结果) 在System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult的asyncResult) 在的System.Threading。 Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func
2 endFunction,Action 1 endAction, Task
1诺言,布尔需要同步) ---从前一个位置的堆栈跟踪结束除了离子被抛出--- 在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务task) 在Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionFilter.d__3。MoveNext() ---内部异常堆栈跟踪结束--- --->(内部异常#0)System.Security.Authentication.AuthenticationException:根据验证过程,远程证书无效。 在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken消息,AsyncProtocolRequest asyncRequest,ExceptionDispatchInfo除外) 在System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken消息,AsyncProtocolRequest AsyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte [] incoming,Int32 count,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte [] buffer,Int32 count,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte [] buffer,Int32 readBytes,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte [] buffer,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken消息,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.StartSendBlob(字节[]来电,的Int32计数,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState .ProcessReceivedBlob(字节[]缓冲液,计数的Int32,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.StartReadFrame(字节[]缓冲液,的Int32的ReadBytes,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.StartReceiveBlob(字节[] buffer,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte [] incoming,Int32 count,AsyncProtocolRe任务asyncRequest) 在System.Net.Security.SslState.ProcessReceivedBlob(字节[]缓冲液,计数的Int32,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.StartReadFrame(字节[]缓冲液,的Int32的ReadBytes,AsyncProtocolRequest asyncRequest) System.Net.Security.SslState.StartSendBlob(Byte [] buffer,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte []传入,Int32计数,AsyncProtocolRequest异步请求) at System.Net.Security.SslState.ProcessReceivedBlob(Byte [] buffer,Int32 count,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte [] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) ---从先前的位置堆栈跟踪的结束,其中引发异常--- 在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 在System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult的结果) 在System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult的asyncResult) 在的System.Threading。 Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func
2 endFunction,Action 1 endAction, Task
1诺言,布尔需要同步) ---从前一个位置的堆栈跟踪结束除了离子被抛出--- 在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务task) 在Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionFilter.d__3。的MoveNext()< ---
我花了大约四个小时尝试不同的事物和周围的Googling,但我似乎无法找出问题的核心原因,因此认为我会检查是否有人在这里有一个想法。