Достаточно часто в конфигурациях Apache я вижу схему, когда в httpd-vhosts.conf для одного и того же сайта делают 2 секции: одну для HTTP на порту 80 (с отдельной директивой Location для /.well-known/acme-challenge/ и редиректом на HTTPS версию сайта во всех остальных случаях) и другую для HTTPS на порту 443. Если веб-сервер обслуживает один-единственный сайт, то использование подобной схемы вполне оправдано, но если речь идёт об условной дюжине интернет ресурсов, то я предлагаю вариант получше.
Концепт заключается в следующем — в httpd.conf настроим всю работу с HTTP для ACME, а HTTPS оставим только в файле конфигурации виртуальных хостов. В первую очередь делаем алиас на заранее созданную директорию:
Alias /.well-known/acme-challenge/ "W:/acme.local/"
И сразу же описываем работу с этой директорией:
<Directory "W:/acme.local/"
Options None
AllowOverride None
ForceType text/plain
Require all granted</Directory>
Для этой директории отключаем набор опций типа автоиндексирования, симлинков, CGI (Options None), запрещаем переопределение конфигурации посредством файлов .htaccess (AllowOverride None) и принудительно устанавливаем текстовый тип содержимого (ForceType text/plain). Во всех остальных случаях даём зелёный свет. В файле конфигурации виртуальных хостов можно переопределить работу алиаса при запросе через HTTPS — например, сделать редирект на страницу 404. Таким образом получается достаточно элегантное решение, когда существует единая директория для обработки ACME, а описание конфигурации сайтов становится лаконичнее — без необходимости дублировать одни и те же секции.
