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



我在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

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

问题在于ACME质询文件是无扩展的,而Umbraco管道试图使用OWIN将所有无扩展请求路由到CMS中的文档。

James Dibble写了一篇关于如何创建OWIN配置文件来拦截任何对"/"的请求的优秀指南。并提供ACME挑战文件:

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

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

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

他的教程中遗漏的一件事是,我还必须安装Microsoft.Owin.StaticFiles包。我也不知道他说的"更新网页中的appStartup应用设置"是什么意思。因为我以前从未使用过OWIN。如果你只是复制他的代码,那么你需要改变你的设置:

<add key="owin:appStartup" value="UmbracoDefaultOwinStartup" />

:

<add key="owin:appStartup" value="Startup" />

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

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

在网上。站点的配置文件,添加~/。umbracoReservedPaths元素和Let's Encrypt将能够访问验证url。

<add key="umbracoReservedPaths" value="~/umbraco,~/.well-known" />

我只是将验证文件写入所需文件夹中的index.html,并具有以下重写规则,以便它为html文件服务:

    <rule name="AcmeChallenge" patternSyntax="Wildcard">
      <match url=".well-known/acme-challenge*" />
      <action type="Rewrite" url="{R:0}/index.html" />
    </rule>

最新更新