ASP.Net 应用程序干扰远程主机 Let's Encrypt (通过 Plesk) 安装?



因此,要安装让我们加密SSL证书,我转到我的plesk帐户,选择域或子域,然后单击让我们加密,然后我只有一个字段才能放入电子邮件地址中和一个要安装的按钮。

要安装,让我们加密为我的网站发送HTTP请求:

GET /.well-known/acme-challenge/n9cD8Lpv-woEU73NhCUdFyqOYMc5hrANF_byoiaYrZc - HTTP/1.1

如果我通过plesk创建一个新的"站点"并安装证书,请获得请求获得的200响应,而SSL CERT安装正常。

但是,我有一个没有安装SSL的"沙盒",然后我将ASP.NETCORE应用程序部署到"沙盒"进行登台,然后尝试安装SSL证书。在运行ASP.NETCORE应用程序时,当我们加密发送该请求时,它会导致404错误,并且安装失败。

有人遇到过吗?我需要配置什么?是MVC路线还是正在干扰的AngularJS(〜1.5(路由?

我在任何地方都看不到a/.well-newand/*目录,我不确定它是否隐藏,但我无法掌握,所以我怎么知道要配置什么,如果需要在路线中配置某些内容以允许GET /.well-known/acme-challenge/*

远程主机技术支持没有帮助。他们告诉我等待72个小时,因为我尝试了很多次,而我只是被锁定(我不是(

这是实际的plesk错误消息

Let's Encrypt SSL certificate installation failed: Challenge marked as invalid. Details: Invalid response from http://my-domain.net/.well-known/acme-challenge/AJsMc3HXiOZRGaFVsMR3uZEdYu1moJ2Po62t3e6uV10 [my-ip]: 404

我可以肯定,我可以通过删除我的网站,安装SSL证书而不是再次上传来"解决"此操作,但是我想知道实际发生了什么,以及是否可以正确处理它。

事后

让我们加密是30天的自动更新服务。如果我的ASP.NET应用程序阻止了安装,则它也将阻止自动续订,因此我必须每30天删除我的网站,然后重新删除,不可接受!

已解决这是对这种非常具体情况的解决方案。

周围还有其他工作可以起作用,当然,此解决方案仅适用于IIS Web服务器。

aspnetcore MVC路由让服务器处理特定的路由

进行快速搜索产生了这个小宝石

似乎与您的特定问题相符。

要获得证书,让我们加密验证您是否通过请求服务器上的文件。在这种情况下,文件不是可访问(状态404(。让我们了解发生了什么。

iis获取请求,并找到关联的网站。然后按顺序执行处理程序,直到一个发送响应为止。ASP.NET核心处理程序是第一个处理请求的人。

挑战文件位于" .well-newand/…"中,但默认情况下ASP.NET Core仅提供位于文件夹" wwwroot" =&gt中的文件;所以,404响应发送给客户。ASP.NET核心已处理要求;因此,IIS静态文件处理程序未调用。

作为解决方法,您可以向上移动" staticfile"处理程序,但是您网站可能无法正常工作。一个更好的解决方案是指示您的ASP.NET核心网站以发送位于目录中的文件"。

这是可以通过注册:

public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
    //...other configs
    app.UseStaticFiles(); // wwwroot
    var wellKnownDirectory = Path.Combine(Directory.GetCurrentDirectory(), @".well-known");
    if (!Directory.Exists(wellKnownDirectory))
        Directory.CreateDirectory(wellKnownDirectory);
    app.UseStaticFiles(new StaticFileOptions
    {
        FileProvider = new PhysicalFileProvider(wellKnownDirectory),
        RequestPath = new PathString("/.well-known"),
        ServeUnknownFileTypes = true // serve extensionless file
    });
    //...other configs
    app.UseMvc();
}

这基本上可以通过核心路由虚拟路径的调用,该路径通过核心抓住物理路径并将文件内容提供给呼叫者。现在,这应该允许验证该域,并让证书请求流程完成以及自动续订。

查看文章及其建议的解决方法,因为似乎不涉及太多其他步骤。

最新更新