6

我在我的@home 网络服务器上使用https://github.com/ebekker/ACMESharp作为我的 SSL(它是免费的!:O)。它非常手动,但在 wiki 上注意到它提到了https://github.com/Lone-Coder/letsencrypt-win-simple的另一个项目,这是一个用于自动申请、下载和安装 SSL 的 GUI证书到您的网络服务器。

GUI 用来验证域的方法是您自己的,它是通过创建一个随机命名的文件,其中包含一个随机文本字符串,[webroot]/.well-known/[randomFile]没有扩展名。使用在此 [webroot] 上运行的 .dotnetcore 应用程序,我无法提供该文件,即使按照说明在 IIS 下更改“处理程序映射”也是如此。

似乎我可以通过直接导航到文件来提供文件[webRoot]/wwwroot/[whatever]- 那么为什么我不能进入[webroot]/.well-known/[randomFile]呢?

有人知道解决这个问题的方法吗?我可以删除 .netcore 应用程序,然后运行 ​​SSL 证书安装,但是此安装需要每 2-3 个月进行一次,而且由于它是手动的,我更愿意弄清楚如何以正确的方式进行安装。

4

1 回答 1

4

我在这里找到了我需要的信息:https ://docs.asp.net/en/latest/fundamentals/static-files.html

基本上在我的 Statup.cs 中我需要改变它:

        // 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?}");
        });

对此:

        // 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?}");
        });

编辑 - 请注意,此目录“.well-known”仅在 Web 服务器上创建,当我开始在本地再次开发时,由于“.well-known”目录不存在而出现错误。所以现在我的项目中只有一个空目录,但至少我的 SSL 更新是自动化的!:D

于 2016-07-16T00:49:38.773 回答