因此,要安装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服务器。
答案 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();
}
这基本上通过核心路由对虚拟路径的调用,该核心抓取物理路径并将文件内容提供给调用者。现在应该允许验证域并让证书请求流程完成以及自动续订。
查看文章及其建议的解决方法,因为似乎没有太多额外的步骤。