Azure LetsEncrypt扩展无法访问Umbraco应用程序中的.well-known / acme-challenge

Jer*_*eck 5 umbraco azure lets-encrypt

我正在Azure中托管Ubraco CMS应用程序。按照此博客文章中的说明进行操作,尝试使用Azure Let'sEncrypt网站扩展请求和安装LetsEncrypt证书时收到以下错误:

System.Exception: The Lets Encrypt ACME server was probably unable to reach http://domain.com/.well-known/acme-challenge/token
Run Code Online (Sandbox Code Playgroud)

我已经验证我所有的应用程序设置都是正确的,扩展程序已正确安装,并且似乎没有任何网络问题。是什么导致此问题?

Jer*_*eck 5

事实证明,问题与 ACME 质询文件是无扩展名的事实有关,并且 Umbraco 管道尝试使用 OWIN 将所有无扩展名请求路由到 CMS 内的文档。

James Dibble 编写了一篇出色的指南,介绍如何创建 OWIN 配置文件以拦截对“/.well-known”的任何请求,并改为提供 ACME 质询文件:

https://www.jdibble.co.uk/blog/using-letsencrypt-with-umbraco

你可以在这里找到他的代码要点:

https://gist.github.com/dibble-james/f47b0cba3494381588482c7f185861bf

他的教程中遗漏的一件事是我还必须安装 Microsoft.Owin.StaticFiles 包。我也不知道他所说的“更新 web.config 中的 owin:appStartup 应用程序设置”是什么意思,因为我以前从未使用过 OWIN。如果你只是 copypasta 他的代码,那么你会想要改变你的设置:

<add key="owin:appStartup" value="UmbracoDefaultOwinStartup" />
Run Code Online (Sandbox Code Playgroud)

对此:

<add key="owin:appStartup" value="Startup" />
Run Code Online (Sandbox Code Playgroud)

关于原因,这里有一篇详细的文章:

http://www.asp.net/aspnet/overview/owin-and-katana/owin-startup-class-detection


Tim*_*ell 5

在站点的 web.config 文件中,将 ~/.well-known 添加到 umbracoReservedPaths 元素,Let's Encrypt 将能够访问验证 URL。

<add key="umbracoReservedPaths" value="~/umbraco,~/.well-known" />
Run Code Online (Sandbox Code Playgroud)