次の方法で共有


Kestrel:既定でサポートされている TLS プロトコル バージョンの変更

Kestrel では、以前と同様に TLS 1.1 および TLS 1.2 プロトコルへの接続を制限するのではなく、システムの既定の TLS プロトコル バージョンが使用されるようになりました。

この変更により、次のことができます。

  • TLS 1.3 は、それをサポートする環境で既定で使用されます。
  • TLS 1.0 は、一部の環境 (既定では Windows Server 2016 など) で使用されるため、通常は 望ましくありません

ディスカッションについては、 問題 dotnet/aspnetcore#22563 を参照してください。

導入されたバージョン

5.0 Preview 6

以前の動作

Kestrel では、接続で TLS 1.1 または TLS 1.2 が既定で使用されている必要があります。

新しい動作

Kestrel を使用すると、オペレーティング システムは、使用する最適なプロトコルを選択し、安全でないプロトコルをブロックできます。 HttpsConnectionAdapterOptions.SslProtocols既定では、SslProtocols.NoneではなくSslProtocols.Tls12 | SslProtocols.Tls11になっています。

変更の理由

TLS 1.3 以降の TLS バージョンは、使用可能になると既定でサポートされるように変更されました。

アプリに特定の理由がない場合を除き、新しい既定値を使用する必要があります。 セキュリティで保護されたプロトコルのみを許可するようにシステムが構成されていることを確認します。

古いプロトコルを無効にするには、次のいずれかのアクションを実行します。

  • Windows 命令を使用して、システム全体の TLS 1.0 などの古いプロトコルを無効にします。 現在、すべての Windows バージョンで既定で有効になっています。

  • 次のように、コードでサポートするプロトコルを手動で選択します。

    using System.Security.Authentication;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.Hosting;
    
    public class Program
    {
        public static void Main(string[] args) =>
            CreateHostBuilder(args).Build().Run();
    
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseKestrel(kestrelOptions =>
                    {
                        kestrelOptions.ConfigureHttpsDefaults(httpsOptions =>
                        {
                            httpsOptions.SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls13;
                        });
                    });
    
                    webBuilder.UseStartup<Startup>();
                });
    }
    

残念ながら、特定のプロトコルを除外する API はありません。

影響を受ける API

HttpsConnectionAdapterOptions.SslProtocols