1. ホーム
  2. https

[解決済み] ASP.NET Core 2.1 + KestrelでHTTPSを無効にするにはどうすればいいですか?

2022-12-20 11:53:16

質問

ASP.NET Core 2.1 の出現により、Kestrel は HTTP のエンドポイントと一緒に HTTPS のエンドポイントを自動的に作成し、デフォルトのプロジェクト テンプレートは HTTP から HTTPS にリダイレクトするように設定されているようです (これは簡単に元に戻すことができます)。

しかし、私の質問は...どのようにしたら私のプロジェクトで HTTPS を完全に無効にすることができるでしょうか。ドキュメントを読み、HTTPS のさまざまな構成設定で遊んでみましたが、何をやっても、それをオフにして HTTP プロジェクトだけを実行することはできないようです。

私がおかしいのか、何かを見逃しているだけなのか。これは非常に簡単にできると思っています。

どのように解決するのですか?

私がやりたかったことを実現する適切な方法は、.UseKestrel() で Kestrel を特別に設定し、次のように単純に単一のアドレスを指定することだとわかりました。

  WebHost.CreateDefaultBuilder(args)
    .UseKestrel(options => {
      if (context.Configuration[WebHostDefaults.EnvironmentKey] == Environments.Development) {
        options.Listen(IPAddress.Loopback, 5080); //HTTP port
      }
    })
    .UseStartup<Startup>();

で、事実上デフォルトの設定を上書きし、Kestelの起動時にこの警告を表示します。

warn: Microsoft.AspNetCore.Server.Kestrel[0]
  Overriding address(es) 'https://localhost:5001, http://localhost:5000'. Binding to endpoints defined in UseKestrel() instead.

開発環境のチェックに注意してください。実稼働環境では、デフォルトのポートが異なり (80)、HTTPSもありません。

2番目のアドレスが指定された場合、そのアドレスは組み込みの開発者証明書で保護されているものと見なされます。

  WebHost.CreateDefaultBuilder(args)
    .UseKestrel(options => {
      options.Listen(IPAddress.Loopback, 5080); //HTTP port
      options.Listen(IPAddress.Loopback, 5443); //HTTPS port
    })
    .UseStartup<Startup>();

もちろん、ここで説明されているように、SSLアドレスを特別に保護することもできます。

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1&tabs=aspnetcore2x

は、実稼働環境でのセットアップに必要です。