6

我正在尝试使用Certify安装Letsencrypt证书,但出现错误,这(我认为)与 Certify 无关。问题是如何配置我的 web.config 以处理我的 Asp.Net Core - Angular2 应用程序。

我没有配置 web.config,Javascript 服务做了。在 Certify 网页上,页面底部写着我的问题:

我收到错误“自动检查无扩展名内容失败..”这意味着您的 Web 服务器配置不允许将没有扩展名的文件提供给站点访问者。不幸的是,这是 Lets Encrypt 服务的要求,以便它获取在您请求证书时在您的站点中自动创建的验证文件(更多信息)。

为了帮助满足此要求,我们尝试为您自动配置。如果您查看 {your site}.well-known\acme-challenge,您会看到我们创建了一个 web.config 和一个名为 configcheck 的文件。如果您无法在 Web 浏览器中浏览到此 configcheck 文件 (http://{your site}/.well-known/acme-challenge/configcheck 那么 Lets Encrypt 服务也无法访问它需要的文件。您可以编辑此文件夹中的 web.config 文件以使无扩展名文件正常工作,然后您可以重新请求您的证书。“.”或“.*”的 mimeMap 条目通常根据您的操作系统版本起作用。

一些专家可以帮助我更正我的 web.config 文件,该文件将支持 letencrypt 需要的任何内容。目前 .well-known/acme-challenge 中的任何内容都无法通过 WebBrowser 访问。

我的 web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
    <rewrite>
      <rules>
        <rule name="redirect" stopProcessing="true">
          <match url="^$" />
          <action type="Rewrite" url="/index.html" />
        </rule>
        <rule name="Angular 2 pushState routing" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_FILENAME}" pattern=".*\.[\d\w]+$" negate="true" />
            <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
            <add input="{REQUEST_URI}" pattern="^/(.well-known)" negate="true"/>
            <add input="{REQUEST_URI}" pattern="^/(signin)" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

谢谢你。
错误截图

4

3 回答 3

13

将其放在.\.well-known\acme-challenge\Web.ConfigLets Encrypt DNS 验证文件旁边的文件中。无需更改Web.Config您已有的。它所做的所有事情都是告诉 IIS 在其所在目录中Web.Config以 mime 类型生成不带扩展名的文件,text/plain正如 Lets Encrypt 所期望的那样。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension="." mimeType="text/plain" />
        </staticContent>
        <handlers>
            <clear />
            <add name="StaticFile" path="*" verb="GET" modules="StaticFileModule" resourceType="Either" />
        </handlers>
    </system.webServer>
</configuration>
于 2017-04-20T19:02:20.563 回答
0

就我而言,问题是我在发出请求时忘记删除 App_Offline.htm。删除后,问题就消失了。

于 2018-03-29T08:16:37.603 回答
0

我在 acme-challenge 文件夹中使用默认 web.config 时遇到的问题是 applicationhost.config 包含:

<section name="handlers" overrideModeDefault="Deny" />

因此,acme-challenge web.config 中的 handlers 部分是不允许的,结果是挑战失败。在这种情况下,解决方案是: 将 applicationhost.config 行更改为:

<section name="handlers" overrideModeDefault="Allow" />

或者...从 acme-challenge 文件夹中的 web.config 中删除处理程序设置。

于 2017-12-17T06:27:05.080 回答