我一直在努力尝试使用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指向该网站一段时间。不是一个好主意,因为客户可能无法访问我们的网站几分钟,但仍然是一个选项。那么问题是:如何在名称的开头创建一个带点(“。”)的控制器或路径? 帮助将非常感激。
答案 0 :(得分:11)
对于ASP.Net MVC或Web窗体,使用某些路由配置,您最终会将此URL视为路由引擎传递给MVC / Forms处理程序的东西,而不是静态文件返回。结果将是404或503.解决方案非常简单:
如果您还没有,请放置挑战文件:
.well-known
非常棘手mostly because Microsoft is lazy,但您可以从cmdline执行此操作,也可以将文件夹创建为.well-known.
和Windows Explorer will notice the workaround and remove the trailing period for you。\.well-known\acme-challenge
内,将挑战文件放在正确的名称和内容中。你可以任何你喜欢的方式去做这个部分;我碰巧使用像echo "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>
来源:https://github.com/Lone-Coder/letsencrypt-win-simple/issues/37
完成。该文件将开始返回而不是404/503,以允许完成挑战 - 您现在可以提交并验证您的域名。
旁白:上面的代码片段将内容类型设置为json,这是一个与letsencrypt不再相关的历史要求。目前的要求是没有要求 - 你可以发送内容类型的无裤/大象,它仍然可以工作。