Letsencrypt acme-challenge on wordpress或asp.net mvc

时间:2016-01-13 15:42:48

标签: wordpress lets-encrypt

我一直在努力尝试使用Let's Encrypt为我的公司生成安全证书。我的公司使用WordPress 3.9.7作为其主要网站,我不允许升级到更新的版本,因为它是由第三方公司处理的。 该网站运行在Windows Server 2008 R2上的Internet Information Services 7.5之上。 我的问题是:如何使wordpress处理http://000.000.000.000/.. ? 我已经创建了一个新的空页面和一个新模板,它可以准确地返回let加密所期望的内容,但是wordpress会为该页面返回404。我的猜测是问题出现在路径开头的点(。)(“.well-known”),但我不知道如何在wordpress上解决这个问题。

我也可以使用asp.net mvc网站,让IIS指向该网站一段时间。不是一个好主意,因为客户可能无法访问我们的网站几分钟,但仍然是一个选项。那么问题是:如何在名称的开头创建一个带点(“。”)的控制器或路径? 帮助将非常感激。

1 个答案:

答案 0 :(得分:11)

对于ASP.Net MVC或Web窗体,使用某些路由配置,您最终会将此URL视为路由引擎传递给MVC / Forms处理程序的东西,而不是静态文件返回。结果将是404或503.解决方案非常简单:

如果您还没有,请放置挑战文件:

  1. 创建必要的目录 - .well-known非常棘手mostly because Microsoft is lazy,但您可以从cmdline执行此操作,也可以将文件夹创建为.well-known.Windows Explorer will notice the workaround and remove the trailing period for you
  2. \.well-known\acme-challenge内,将挑战文件放在正确的名称和内容中。你可以任何你喜欢的方式去做这个部分;我碰巧使用像echo "oo0acontents" > abcdefilename
  3. 这样的Git Bash

    然后使用以下内容在acme-challenge目录中创建一个Web.Config文件:

    <?xml version = "1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <staticContent>
                <clear />
                <mimeMap fileExtension = ".*" mimeType="text/json" />
            </staticContent>
    
            <handlers>
                <clear />
                <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule" 
                resourceType="Either" requireAccess="Read" />  
            </handlers>
        </system.webServer>
    </configuration>
    

    来源:https://github.com/Lone-Coder/letsencrypt-win-simple/issues/37

    完成。该文件将开始返回而不是404/503,以允许完成挑战 - 您现在可以提交并验证您的域名。

    旁白:上面的代码片段将内容类型设置为json,这是一个与letsencrypt不再相关的历史要求。目前的要求是没有要求 - 你可以发送内容类型的无裤/大象,它仍然可以工作。