ASP.Net应用程序干扰远程主机让我们加密(通过Plesk)安装?

时间:2017-06-24 04:23:52

标签: angularjs iis asp.net-core asp.net-core-mvc plesk

因此,要安装Let的加密SSL证书,我会转到我的Plesk帐户,选择一个域或子域,然后点击Let's Encrypt然后我只有一个字段可以放入一个电子邮件地址,还有一个要安装的按钮。 / p>

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

  

print (np.arange(len(df.index))//5) [0 0 0 0 0 1 1] df1 = df.groupby(np.arange(len(df.index))//5).agg({'Column':'mean','Year':['first', 'last']}) df1.columns = df1.columns.map('_'.join) df1.insert(0, 'Years', df1['Year_first'].astype(str) + '-' + df1['Year_last'].astype(str)) #instead insert if is not necessary first position of column #df1['Years'] = df1['Year_first'].astype(str) + '-' + df1['Year_last'].astype(str) df1.drop(['Year_first','Year_last'], axis=1, inplace=True) print (df1) Years Column_mean 0 1991-1995 5 1 1996-1997 8

如果我通过Plesk创建一个新的'site'并安装证书,那么GET请求就会得到一个很好的200响应并且SSL证书安装得很好。

但是,我有一个没有安装SSL的“沙箱”,然后我将一个ASP.NetCore应用程序部署到“沙箱”进行暂存,然后尝试安装SSL证书。运行ASP.NetCore应用程序时,当Let's Encrypt发送该GET请求时,会导致404错误,安装失败。

有没有人碰到这个?我需要配置什么?它是MVC路由还是AngularJS(~1.5)路由干扰?

我没有在任何地方看到/.well-known/*目录,我不确定它是否被隐藏,但我无法理解,所以我怎么知道要配置什么,如果我需要的话在路由中配置某些内容以允许GET /.well-known/acme-challenge/n9cD8Lpv-woEU73NhCUdFyqOYMc5hrANF_byoiaYrZc - HTTP/1.1

远程主机技术支持无济于事。他们告诉我要等72个小时,因为我多次尝试过,我只是被锁定了(我不是这样)

以下是实际的Plesk错误消息

  

GET /.well-known/acme-challenge/*

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

AFTERTHOUGHT

让我们的加密是一个30天的自动续订服务。如果我的ASP.NET应用程序阻止安装,那么它也会阻止自动续订,所以我必须每30天删除一次我的网站并重新部署,这是不可接受的!

解决 以下是此特定方案的解决方案。

还有其他工作可行,当然这个解决方案只适用于IIS Web服务器。

ASPNetCore MVC Routing Let Server Handle Specific Route

1 个答案:

答案 0 :(得分:3)

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

Using Let’s encrypt with ASP.NET Core

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

  

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

     

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

     

挑战文件位于“.well-known / ...”文件夹中,但默认情况下   ASP.NET Core仅提供位于文件夹“wwwroot”=>中的文件。所以,   404响应发送给客户端。 ASP.NET Core已经处理了   请求;因此,不会调用IIS静态文件处理程序。

     

作为一种解决方法,您可以向上移动“StaticFile”处理程序,但是您的   网站可能无法按预期工作。更好的解决方案是指导   您的ASP.NET Core网站发送位于目录中的文件   “。知名”。

     

这可以通过注册来实现:

public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
    //...other configs

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

    //...other configs

    app.UseMvc();
}

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

查看文章及其建议的解决方法,因为似乎没有太多额外的步骤。