Сервер Lets Encrypt ACME, вероятно, не смог достичь

#node.js #express #lets-encrypt #azure-webapps

#node.js #экспресс #lets-encrypt #azure-webapps

Вопрос:

Я настроил расширения Let’s Encrypt в веб-приложении Azure. Когда я пытаюсь сгенерировать SSL-сертификаты для пользовательских доменов, я получаю сообщение об ошибке ниже:

 The Lets Encrypt ACME server was probably unable to reach http://www.holzlauf.ch/.well-known/acme-challenge/hyDaCURuFoJGi9ASuJdNppayYcjIRpqp3vMLTKbA-hA view error report from Lets Encrypt at https://acme-staging.api.letsencrypt.org/acme/authz/YnGjTUHQa5upTAajCNPOLX_aLLlmRQiRP6uj3a0vAm8 for more information
 

ошибка источника:

 An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
 

Трассировка стека

 [Exception: The Lets Encrypt ACME server was probably unable to reach http://www.holzlauf.ch/.well-known/acme-challenge/hyDaCURuFoJGi9ASuJdNppayYcjIRpqp3vMLTKbA-hA view error report from Lets Encrypt at https://acme-staging.api.letsencrypt.org/acme/authz/YnGjTUHQa5upTAajCNPOLX_aLLlmRQiRP6uj3a0vAm8 for more information]
   LetsEncrypt.Azure.Core.Services.<Authorize>d__5.MoveNext() in D:a1sLetsEncrypt.SiteExtension.CoreServicesBaseHttpAuthorizationChallengeProvider.cs:121
   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()  26
   LetsEncrypt.Azure.Core.Services.<Authorize>d__5.MoveNext() in D:a1sLetsEncrypt.SiteExtension.CoreServicesBaseHttpAuthorizationChallengeProvider.cs:131
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)  99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)  58
   LetsEncrypt.Azure.Core.Services.<RequestCertificate>d__5.MoveNext() in D:a1sLetsEncrypt.SiteExtension.CoreServicesAcmeService.cs:44
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)  99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)  58
   LetsEncrypt.Azure.Core.<RequestInternalAsync>d__16.MoveNext() in D:a1sLetsEncrypt.SiteExtension.CoreCertificateManager.cs:231
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)  99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)  58
   LetsEncrypt.Azure.Core.<RequestAndInstallInternalAsync>d__17.MoveNext() in D:a1sLetsEncrypt.SiteExtension.CoreCertificateManager.cs:244
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)  99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)  58
   LetsEncrypt.SiteExtension.Controllers.<Install>d__7.MoveNext() in D:a1sLetsEncrypt-SiteExtensionControllersHomeController.cs:250
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)  99
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)  58
   System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult)  97
   System.Web.Mvc.Async.<>c__DisplayClass8_0.<BeginInvokeAsynchronousActionMethod>b__1(IAsyncResult asyncResult)  17
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult)  10
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()  49
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)  32
   System.Web.Mvc.Async.<>c__DisplayClass11_0.<InvokeActionMethodFilterAsynchronouslyRecursive>b__0()  58
   System.Web.Mvc.Async.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2()  228
   System.Web.Mvc.Async.<>c__DisplayClass7_0.<BeginInvokeActionMethodWithFilters>b__1(IAsyncResult asyncResult)  10
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult)  10
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()  49
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)  34
   System.Web.Mvc.Async.<>c__DisplayClass3_6.<BeginInvokeAction>b__4()  35
   System.Web.Mvc.Async.<>c__DisplayClass3_1.<BeginInvokeAction>b__1(IAsyncResult asyncResult)  100
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult)  10
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()  49
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)  27
   System.Web.Mvc.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState)  11
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)  29
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()  49
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)  45
   System.Web.Mvc.<>c.<BeginExecute>b__151_2(IAsyncResult asyncResult, Controller controller)  13
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)  22
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()  49
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)  26
   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult)  10
   System.Web.Mvc.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState)  28
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)  29
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()  49
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)  28
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)  9
   System.Web.CallHandlerExecutionStep.InvokeEndHandler(IAsyncResult ar)  152
   System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar)  126
 

Ответ №1:

Эта ошибка означает, что letsencrypt не может проверить, действительно ли вы являетесь владельцем домена, для которого вы пытаетесь создать сертификат. Он пытается получить доступ к URL-адресу:

 http://www.holzlauf.ch/.well-known/acme-challenge/hyDaCURuFoJGi9ASuJdNppayYcjIRpqp3vMLTKbA-hA
 

Но сервер letsencrypt не может достичь этого местоположения.

Итак, давайте сделаем шаг назад. Как правило, способ работы letsencrypt заключается в том, что ваш certbot (или любой другой клиент acme, который вы используете) создает конечную точку, доступную по http://www.example.com/.well-known/<some-hash> адресу, а затем запрашивает у сервера доступ к ней. Если результат HTTP равен 200, то сервер Letsencrypt ACME считает это успешным и выдает сертификат. Если результат равен 400 или более, то это сбой, и возвращается ошибка, подобная приведенной выше.

То, как именно создается хорошо известное местоположение, зависит от того, какой плагин certbot вы используете. Например:

  • плагин webroot разместит файл в вашей файловой системе в том месте, которое вы укажете в конфигурации
  • плагин nginx обновит вашу конфигурацию nginx, чтобы при получении ресурса возвращался код состояния HTTP 200
  • плагин DNS обновит ваши записи DNS, чтобы доказать аналогичным образом.

Итак, учитывая все это, я не знаю точно, в чем здесь проблема, но, похоже, вы неправильно настроили плагин. Надеюсь, хотя это дает вам достаточно информации для исправления. И если это не так, пожалуйста, прокомментируйте ниже и уточните, какой плагин вы используете и какова его конфигурация.


Редактировать

Если вы перейдете сюда: https://acme-staging.api.letsencrypt.org/acme/authz/YnGjTUHQa5upTAajCNPOLX_aLLlmRQiRP6uj3a0vAm8

Вы можете увидеть более подробное описание полученной ошибки.

Ответ 403 запрещен. Это означает, что ваш веб-сервер заблокировал доступ к этому URL. Вам необходимо убедиться, что ваш веб-сервер (IIS, apache, nginx) разрешает доступ. Точный способ исправить это зависит от того, какой плагин DNS вы используете. Список см. В документации. Нажмите на ссылку и следуйте инструкциям.

Комментарии:

1. Спасибо за ваш ответ. Я использую DNS-провайдера. Sry Я новичок в этом :/

2. Какой плагин DNS вы используете? Смотрите мою поправку к ответу.