Я устанавливаю экземпляр MS CRM 2015 локально на сервере Win 2012 R2, IIS 8.5.
Я хотел бы использовать сервис 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 но я получаю там ту же ошибку.
В качестве альтернативы Let's Encrypt можно проверить с помощью DNS, но я не совсем в этом разбираюсь и не могу найти доказательств того, что у моего провайдера есть API для этой цели.
Есть ли у меня другие варианты?
Спасибо @Peter Hahndorf за обходной путь, @benadams исправления letsencrypt для IIS для синтаксиса и @Mike Ratcliffe (редактирование ApplicatonHost.config)
Если вы хотите, чтобы Let's Encrypt выполнял запись в подпапку ./well-known на веб-сайте CRM, сначала создайте подпапку и измените конфигурацию следующим образом.
Отредактируйте 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.