2016-07-16 162 views
5

Sto usando https://github.com/ebekker/ACMESharp per il mio SSL sul mio web server @home (è gratuito!: O). Era un bel manuale, ma sul wiki si è accennato a un altro progetto allo https://github.com/Lone-Coder/letsencrypt-win-simple che era una GUI per l'automazione dell'applicazione, del download e dell'installazione del certificato SSL sul tuo server web.File statici all'esterno di wwwroot per .netcore app

Il metodo utilizzato dalla GUI per convalidare il dominio è il proprio, è creato un file con un nome casuale con una stringa casuale di testo all'interno di [webroot]/.well-known/[randomFile] senza estensione. Con l'applicazione .dotnetcore in esecuzione su questo [webroot], non riesco a pubblicare il file, anche dopo aver seguito le istruzioni per la modifica di "Mapping gestori" in IIS.

Sembra che posso servire i file navigando direttamente a loro a [webRoot]/wwwroot/[whatever] - quindi perché non posso in [webroot]/.well-known/[randomFile]?

Qualcuno sa come aggirare questo? Posso eliminare l'app .netcore, quindi eseguire l'installazione del certificato SSL, ma questa installazione deve essere eseguita ogni 2-3 mesi e, poiché è manuale, preferirei capire come farlo nel modo giusto.

risposta

3

ho trovato le informazioni di cui avevo bisogno qui: https://docs.asp.net/en/latest/fundamentals/static-files.html

Fondamentalmente nel mio Statup.cs avevo bisogno di cambiare questo:

 // allows for the direct browsing of files within the wwwroot folder 
     app.UseStaticFiles(); 

     // MVC routes 
     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 

a questo:

 // allows for the direct browsing of files within the wwwroot folder 
     app.UseStaticFiles(); 

     // Allow static files within the .well-known directory to allow for automatic SSL renewal 
     app.UseStaticFiles(new StaticFileOptions() 
     { 
      ServeUnknownFileTypes = true, // this was needed as IIS would not serve extensionless URLs from the directory without it 
      FileProvider = new PhysicalFileProvider(
        Path.Combine(Directory.GetCurrentDirectory(), @".well-known")), 
      RequestPath = new PathString("/.well-known") 
     }); 

     // MVC routes 
     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 

EDIT - Nota che questa directory ".well-known" è stata creata solo sul server web, quando ho iniziato a sviluppare di nuovo localmente, ricevevo errori perché "ben noto" la directory non esisteva. Così ora ho solo una directory vuota nel mio progetto, ma almeno il mio rinnovo SSL è automatizzato! : D