Letsencrypt acme-challenge on wordpress或asp.net mvc

zai*_*orx 6 wordpress lets-encrypt

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

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

Chr*_*ini 11

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

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

  1. 创建必要的目录 - .well-known很棘手,主要是因为Microsoft很懒,但您可以从cmdline执行此操作或创建文件夹.well-known.,Windows资源管理器会注意到解决方法并为您删除尾随句点.
  2. 在内部\.well-known\acme-challenge放置具有正确名称和内容的挑战文件.你可以任何你喜欢的方式去做这个部分; 我碰巧使用Git Bashecho "oo0acontents" > abcdefilename

然后使用以下内容在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>
Run Code Online (Sandbox Code Playgroud)

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

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

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