Lets-Encrypt

讓我們使用 IIS 為 MS CRM 加密證書

  • October 11, 2019

我在 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/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 但我在那裡遇到同樣的錯誤。

作為替代方案,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 腳本請求證書。

引用自:https://serverfault.com/questions/795768