Inclure le dossier .well-known dans votre projet ASP.NET Core

.well-known/acme-challenge/*** introuvable (http 404)

Si vous souhaitez utiliser Let’s Encrypt, que vous choisissez la voie manuelle et que vous passez la valeur http à l’argument –preferred-challenges pour générer un certificat, vous risquez d’obtenir une réponse HTTP introuvable (404) pour un fichier situé dans ce dossier.

Dans mon exemple, j’ai créé le dossier .well-known à l’intérieur du dossier wwwroot.

Pour résoudre ce problème, vous devez ajouter l’instruction suivante :

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            // ...
            app.UseStaticFiles(new StaticFileOptions
            {
                FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot/.well-known")),
                RequestPath = new PathString("/.well-known"),
                ServeUnknownFileTypes = true // serve extensionless file
            });
            // ...
        }

Vous devez ajouter cette instruction de configuration après la ligne app.UseStaticFiles();.

Cette instruction nécessite l’ajout de quelques directives using :

  • using System.IO;
  • using Microsoft.Extensions.FileProviders;
  • using Microsoft.AspNetCore.Http

Le dossier peut ne pas apparaître dans Visual Studio. Vous pouvez ajouter les lignes de configuration suivantes dans le fichier csproj de votre projet :

    <ItemGroup>
        <Content Include="wwwroot\.well-known\acme-challenge\**" />
    </ItemGroup>