У меня есть Runbook в Azure, который использует AcmeSharp для создания сертификатов Let's Encrypt для веб-сайта, работающего в службах приложений Azure. Я использовал его много раз успешно на многих сайтах ASP.Net. Очевидно, я никогда не пробовал его на сайте ASP.Net Core (2.2) до сих пор.
Я почти уверен, что столкнулся с проблемой, описанной в этом сообщении в блоге - https://ronaldwildenberg.com/letsencrypt-for-asp-net-core-on-azure. В основном, скрипт публикует статический файл в /.wellknown/acme-challenge/randomstring/index.html на моем сайте, а затем Let's Encrypt пытается проверить этот файл. Я получаю 404 при попытке попасть по этому URL, хотя я вижу его в файловой системе в Куду.
Я чувствовал, что это проблема статического файла в ASP.Net Core, и когда я нашелупомянутое выше сообщение в блоге - я думал, что это будет ответом. Я изменил свой код, как предписано в статье, но я все еще получаю 404.
Немного отличается от статьи, вместо файлов с длинными случайными строками символов, как на скриншоте статьи, мой скрипт генерируетСтрока, как это, но создает папку с этим именем. Внутри каждой папки есть один файл (с именем index.html), который содержит информацию для проверки, которую ищет Let's Encrypt. Вы можете увидеть это на http://www.technicality.online/.well-known/acme-challenge/
Вы можете видеть, что папки доступны для просмотра, и если вы нажмете одну, вы увидите ссылку на index.html. Проблема в том, что если вы нажмете index.html, вы получите 404. Я поместил это в свой Startup.Configure:
var rootPath = Path.GetFullPath(".");
var acmeChallengePath =
Path.Combine(rootPath, @".well-known\acme-challenge");
app.UseDirectoryBrowser(new DirectoryBrowserOptions
{
FileProvider = new PhysicalFileProvider(acmeChallengePath),
RequestPath = new PathString("/.well-known/acme-challenge"),
});
app.UseStaticFiles(new StaticFileOptions
{
ServeUnknownFileTypes = true
});
(я не думаю, что мне нужен ServeUnknownFileTypes, так как мой файлindex.html, в отличие от длинной случайной строки в сообщении в блоге, но я не думаю, что это должно повредить чему-либо.)
Я подумал, что, возможно, проблема в том, что файл не содержит действительного HTML(просто строка символов), но я поместил другой файл, который действительно содержал html, и при щелчке по нему я также получил 404.
Есть ли какое-то другое ядро ASP.Net (или служба приложений Azure)подробно мне не хватает, чтобы приложение обслуживало файлы index.html?