.NET Core × Let's Encrypt
.NET Core 3.1とkestrelの環境でLet's Encryptを使おうとしたら躓きました。
.NET CoreではStartup.Configure()にてHTTP要求パイプラインを構築し、そこで「静的ファイルミドルウェア」を追加することで静的ファイルへアクセス可能となります。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseStaticFiles();
しかし、予め.NET Coreに登録されているファイル種別(拡張子)しかアクセスを許可しないため、登録されていないファイル種別は404となります。
Let's EncryptがWebルート(wwwroot)に作成するファイルは.NET Coreには登録されていないため、404となり認証に失敗します。
これを解決するためには登録されていないファイル種別のファイルもアクセスを許可します。
これを解決するためには登録されていないファイル種別のファイルもアクセスを許可します。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions
{
ServeUnknownFileTypes = true,
DefaultContentType = "application/octet-stream"
});
ポイントとしては引数を渡さないUseStaticFiles()も必要なところ。
これがないと、404のままでした。
コメント
コメントを投稿