我在 Win 2012 R2 服务器、IIS 8.5 上本地安装 MS CRM 2015 实例。
我想使用 Let's Encrypt 服务在此服务器上为 crm.example.com 生成证书。
Let's Encrypt 想使用该.well-known/acme-challenge
目录进行验证。MS CRM 已接管默认网站,并使用 Windows 身份验证将请求重定向到其网站文件夹。
有没有办法将 CRM 网站内的.well-known/acme-challenge
文件夹列入白名单,以避免身份验证?
我曾尝试在 中添加一个location
部分web.config
,但 IIS 会引发错误,因为路径以点开头。
我尝试添加一个处理程序来解决该问题,如:
https://stackoverflow.com/questions/11728846/dots-in-url-causes-404-with-asp-net-mvc-and-iis 但我在那里遇到同样的错误。
作为替代方案,Let's Encrypt 可以使用 DNS 进行验证,但我并没有真正做到这一点,而且我找不到证据证明我的提供商有用于此目的的 API。
我还有其他选择吗?
感谢@Peter Hahndorf 提供了解决方法,感谢@benadamsletsencrypt 修复了IIS的语法,感谢@Mike Ratcliffe (编辑ApplicatonHost.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 脚本请求证书。