2017-04-21 17 views
2

の入力を要求したことがない:ASP.NETコアケストレルは、私は、HTTPSを使用するように設定ASP.NETコア1.1アプリケーションを持っているし、クライアント証明書を要求するクライアント証明書

Application Main Code

私が上でアプリケーションを実行していますよLinux。

ClientCertificateModeを "AllowCertificates"に変更すると、すべて正常に動作しますが、ブラウザはクライアント証明書を要求しません。

"RequireCertificate"を設定しても、ブラウザで証明書の入力を求めるメッセージが表示されず、次の2つの例外(両方とも4回繰り返されます)がサーバー側で返され、ブラウザから応答が返されません。

Microsoft.AspNetCore.Server.Kestrel:エラー:ConnectionFilter.OnConnection

System.AggregateException:1つの以上のエラーが発生しました。 (リモート側がトランスポートストリームを閉じたために認証に失敗しました)---> System.IO.IOException:リモート側がトランスポートストリームを閉じたため、認証に失敗しました。 (AsyncProtocolRequest asyncRequest) --- System.Net.Security.SslState.StartReadFrame(Byte []バッファ、Int32 readBytes、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、アクション1 endAction, Task 1つの約束、ブール要求iresSynchronization)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスクタスク) でSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() で例外がスローされた以前の位置からスタックトレース--- の ---終了時Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionFilter.d__3.MoveNext() ---内部例外スタックトレースの終了--- --->(内部例外#0)System.IO.IOException:認証が失敗しました。リモートパーティはトランスポートストリームを閉じました。 (AsyncProtocolRequest asyncRequest) --- System.Net.Security.SslState.StartReadFrame(Byte []バッファ、Int32 readBytes、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、アクション1 endAction, Task 1つの約束、ブール要求iresSynchronization)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスクタスク) でSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() で例外がスローされた以前の位置からスタックトレース--- の ---終了時Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionFilter.d__3。MoveNextメソッド()< ---

Microsoft.AspNetCore.Server.Kestrel:エラー:ConnectionFilter.OnConnection

System.AggregateException:1つ以上のエラーが発生しました。 (リモート証明書は検証手順に従って無効です。)---> System.Security.Authentication.AuthenticationException:リモート証明書が検証手順に従って無効です。 System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolTokenメッセージ、AsyncProtocolRequestでSystem.Net.Security.SslState.StartSendAuthResetSignal(ProtocolTokenメッセージ、AsyncProtocolRequest asyncRequest、ExceptionDispatchInfo例外) でSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() でasyncRequest)System.Net.Security.SslState.ProcessReceivedBlob(バイト[]バッファ、のInt32カウント、AsyncProtocolRequest asyncRequest) ATでSystem.Net.Security.SslState.StartSendBlobで (バイト[]は着信、のInt32は、AsyncProtocolRequest asyncRequestカウント) を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でSystem.Net.Security.SslState.StartSendBlobでSystem.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolTokenメッセージ、AsyncProtocolRequest asyncRequest) (バイト[]着信、のInt32カウント、AsyncProtocolRequest asyncRequest) でSystem.Net.Security.SslState.StartReadFrame(Byte [] buffer、Int32 readBytes、AsyncProtocolRequest asyncRequest)の System.Net.Security.SslState.StartReceiveBlob(Byte []バッファ、Int32 readBytes、AsyncProtocolRequestのasyncRequest)で を返します。 []バッファ、AsyncProtocolRequest asyncRequest)System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolTokenメッセージ、AsyncProtocolRequest asyncRequest)の でSystem.Net.Security.SslState.StartSendBlob(Byte [] incoming、Int32 count、AsyncProtocolRe)の にあります。 System.Net.Security.SslState.StartReadFrameでSystem.Net.Security.SslState.ProcessReceivedBlobで探求asyncRequest) (バイト[]バッファのInt32は、AsyncProtocolRequest asyncRequestカウント) (バイト[]バッファのInt32 readBytes、AsyncProtocolRequest asyncRequest) System.Net.Security.SslState.StartReceiveBlob(Byte []バッファ、AsyncProtocolRequest asyncRequest)で System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolTokenメッセージ、AsyncProtocolRequest asyncRequest)で System.Net.Security.SslState.StartSendBlob System.Net.Security.SslState.ProcessReceivedBlob(Byte [] buffer、Int32 count、AsyncProtocolRequest asyncRequest)の でSystem.Net.Security.SslState.StartReadFrame(Byte [])バッファで を受け取ると、 Int32 readBytes、 System.Runtime.ExceptionServices.ExceptionDispatchInfo.ThrowでSystem.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) ---例外がスローされた以前の場所からのスタックトレースの終わり--- でAsyncProtocolRequest asyncRequest) () System.Net.Security.SslState.EndProcessAuthenticationでSystem.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) (たIAsyncResult結果)で System.ThreadingでSystem.Net.Security.SslStream.EndAuthenticateAsServer(たIAsyncResult asyncResult) ました。 Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func 2 endFunction、アクション1 endAction, Task 1 promise、ブール要求が同期) ---前の場所からのスタックトレースの終わりイオンはMicrosoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionFilter.d__3でSystem.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスクタスク) でSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() で ---スローされました。MoveNext() ---内部例外スタックトレースの終了--- --->(内部例外#0)System.Security.Authentication.AuthenticationException:検証手順に従ってリモート証明書が無効です。 System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolTokenメッセージ、AsyncProtocolRequestでSystem.Net.Security.SslState.StartSendAuthResetSignal(ProtocolTokenメッセージ、AsyncProtocolRequest asyncRequest、ExceptionDispatchInfo例外) でSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() でasyncRequest)System.Net.Security.SslState.ProcessReceivedBlob(バイト[]バッファ、のInt32カウント、AsyncProtocolRequest asyncRequest) ATでSystem.Net.Security.SslState.StartSendBlobで (バイト[]は着信、のInt32は、AsyncProtocolRequest asyncRequestカウント) を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でSystem.Net.Security.SslState.StartSendBlobでSystem.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolTokenメッセージ、AsyncProtocolRequest asyncRequest) (バイト[]着信、のInt32カウント、AsyncProtocolRequest asyncRequest) でSystem.Net.Security.SslState.StartReadFrame(Byte [] buffer、Int32 readBytes、AsyncProtocolRequest asyncRequest)の System.Net.Security.SslState.StartReceiveBlob(Byte []バッファ、Int32 readBytes、AsyncProtocolRequestのasyncRequest)で を返します。 []バッファ、AsyncProtocolRequest asyncRequest)System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolTokenメッセージ、AsyncProtocolRequest asyncRequest)の でSystem.Net.Security.SslState.StartSendBlob(Byte [] incoming、Int32 count、AsyncProtocolRe)の にあります。 System.Net.Security.SslState.StartReadFrameでSystem.Net.Security.SslState.ProcessReceivedBlobで探求asyncRequest) (バイト[]バッファのInt32は、AsyncProtocolRequest asyncRequestカウント) (バイト[]バッファのInt32 readBytes、AsyncProtocolRequest asyncRequest) System.Net.Security.SslState.StartReceiveBlob(Byte []バッファ、AsyncProtocolRequest asyncRequest)で System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolTokenメッセージ、AsyncProtocolRequest asyncRequest)で System.Net.Security.SslState.StartSendBlob System.Net.Security.SslState.ProcessReceivedBlob(Byte [] buffer、Int32 count、AsyncProtocolRequest asyncRequest)の でSystem.Net.Security.SslState.StartReadFrame(Byte [])バッファで を受け取ると、 Int32 readBytes、 System.Runtime.ExceptionServices.ExceptionDispatchInfo.ThrowでSystem.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) ---例外がスローされた以前の場所からのスタックトレースの終わり--- でAsyncProtocolRequest asyncRequest) () System.Net.Security.SslState.EndProcessAuthenticationでSystem.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) (たIAsyncResult結果)で System.ThreadingでSystem.Net.Security.SslStream.EndAuthenticateAsServer(たIAsyncResult asyncResult) ました。 Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func 2 endFunction、アクション1 endAction, Task 1 promise、ブール要求が同期) ---前の場所からのスタックトレースの終わりイオンはMicrosoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionFilter.d__3でSystem.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスクタスク) でSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() で ---スローされました。MoveNextメソッド()< ---

Browser Screenshot

私は違う事をしようと周りグーグルで約4時間を費やしてきたが、私は問題の核心な原因が何であるかを見つけ出すように見えることはできません、そう思いました私はここに誰かがアイデアを持っているかどうかを調べるだろう。

答えて

0

解決策が見つかったのかどうかは不明ですが、最近同様の問題が発生しました。私は、サーバーが信頼するCAによって署名されたクライアント証明書がない場合、プロンプトは表示されないことを発見しました。私の解決策は、ルートCAをLinuxのトラストストアに追加することでした。その後、クライアント証明書が適切に送信/プロンプトされます。

0

私は、IISをリバースプロキシとして使用して証明書情報を取得し(そして検証を行いました)、それをヘッダーでKestrelに渡しました。

関連する問題