我正在 Win 2012 R2 Server、IIS 8.5 上安装 MS CRM 2015 实例。
我想使用 Let's Encrypt 服务为此服务器上的 crm.example.com 生成证书。
Let's Encrypt 想要使用该.well-known/acme-challenge
目录进行验证。MS CRM 已接管默认网站并使用 Windows 身份验证将请求重定向到其网站文件夹。
有没有办法将文件夹列入白.well-known/acme-challenge
名单在 CRM 网站内,以避免身份验证?
我曾尝试location
在中添加一个部分web.config
,但是 IIS 抛出一个错误,因为路径以点开头。
我尝试添加处理程序来解决该问题,如下所示:
https://stackoverflow.com/questions/11728846/dots-in-url-causes-404-with-asp-net-mvc-and-iis 但我遇到了同样的错误。
作为替代方案,可以使用 DNS 来验证 Let's Encrypt,但我实际上并不太了解这一点,并且我找不到证据证明我的提供商具有用于此目的的 API。
我还有其他选择吗?
答案1
感谢@Peter Hahndorf 提供的解决方法,感谢@benadams针对 IIS 的 letsencrypt 修复对于语法,以及@Mike Ratcliffe(编辑 ApplicationHost.config)
如果您希望 Let's Encrypt 写入 CRM 网站的 ./well-known 子文件夹,请先创建子文件夹,然后按如下方式更改配置。
编辑 ApplicationHost.config
(主 IIS 配置文件),我的位于 下 Windows/System32/inetsrv/config
。如果您运行的是 64 位版本的 Windows,则必须使用 64 位编辑器(我使用了 Windows 记事本)。
我在该部分添加/更改了以下几行<location path="Microsoft Dynamics CRM/.well-known">
。
<system.webServer> <validation validateIntegratedModeConfiguration="false" /> <staticContent> <mimeMap fileExtension=".*" mimeType="text/plain" /> <mimeMap fileExtension="." mimeType="text/plain" /> </staticContent> <handlers> <clear /> <add name="StaticFile" path="*" verb="*" type="" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" scriptProcessor="" resourceType="Either" requireAccess="Read" allowPathInfo="false" preCondition="" responseBufferLimit="4194304" /> </handlers> <security> <authentication> <anonymousAuthentication enabled="true" /> </authentication> </security> </system.webServer>
这允许匿名身份验证和任何用户访问 CRM 默认网站下以点开头的路径。
通过此设置,我可以使用 letsencrypt-win-simple PowerShell 脚本请求证书。