HttpSys:既定で無効になっているクライアント証明書の再ネゴシエーション

接続を再ネゴシエートし、クライアント証明書を要求するオプションは既定で無効になっています。 ディスカッションについては、イシュー dotnet/aspnetcore#23181 を参照してください。

導入されたバージョン

ASP.NET Core 5.0

以前の動作

接続を再ネゴシエートし、クライアント証明書を要求できます。

新しい動作

クライアント証明書は、初回接続ハンドシェイク中にのみ要求できます。 詳細については、pull request dotnet/aspnetcore#23162 を参照してください。

変更理由

再ネゴシエーションによって、パフォーマンスとデッドロックのさまざまな問題が発生しました。 また、HTTP/2 でサポートされていません。 この動作を制御するオプションが ASP.NET Core 3.1 で導入されて以降の追加コンテキストについては、イシュー dotnet/aspnetcore#14806 を参照してください。

クライアント証明書を必要とするアプリでは netsh.exe を使用し、clientcertnegotiation オプションを enabled に設定する必要があります。 詳細については、「netsh http コマンド」を参照してください。

クライアント証明書をアプリの一部のみで有効にする場合、「オプションのクライアント証明書」にあるガイダンスをご覧ください。

以前の再ネゴシエート動作が必要な場合、以前の値である ClientCertificateMethod.AllowRenegotiateHttpSysOptions.ClientCertificateMethod を設定してください。 これは上述の理由から推奨されておらず、リンク先のガイダンスで推奨されていません。

影響を受ける API