使用 IIS 为 MS CRM 加密证书

使用 IIS 为 MS CRM 加密证书

我正在 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/10351075/allow-anonymous-authentication-for-a-single-folder-in-web-config

我尝试添加处理程序来解决该问题,如下所示:

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 脚本请求证书。

相关内容