10

我正在尝试按照以下说明让 Azure Let's encrypt site 插件为我的 Azure 网站之一工作:

https://gooroo.io/GoorooTHINK/Article/16420/Lets-Encrypt-Azure-Web-Apps-the-Free-and-Easy-Way/20047#.VxUIbKgrKUl

但是当我运行它时出现授权错误。我不知道从哪里开始尝试解决这个问题,任何帮助都会非常受欢迎。

错误如下:

Microsoft.Rest.Azure.CloudException:对象 id 为“ {same id here??} ”的客户端“ {id} ”无权在“/subscriptions/”范围内执行“Microsoft.Web/sites/read”操作{订阅 id} /resourceGroups/Default-Web-NorthEurope/providers/Microsoft.Web/sites/ {sitename} '。在 Microsoft.Azure.Management.WebSites.SitesOperations.d__29.MoveNext()

更新

这是访问 Web 应用程序的原则的问题。

我决定在这里完成特洛伊狩猎演练: https ://www.troyhunt.com/everything-you-need-to-know-about-loading-a-free-lets-encrypt-certificate-into-an-azure-网站/

这非常好 - 他使用旧的 azure 门户来设置活动目录,我发现它更有用,因为我实际上可以看到发生了什么。

无论如何,我已经完成了整个过程,直到实际的证书请求,现在我收到了 403 服务器错误返回:

The remote server returned an error: (403) Forbidden.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Net.WebException: The remote server returned an error: (403) Forbidden.

Source Error: 

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.

Stack Trace: 


[WebException: The remote server returned an error: (403) Forbidden.]
   System.Net.HttpWebRequest.GetResponse() +1390
   ACMESharp.AcmeClient.RequestHttpPost(Uri uri, Object message) +642

[AcmeWebException: Unexpected error]
   ACMESharp.AcmeClient.AuthorizeIdentifier(String dnsIdentifier) +435
   LetsEncrypt.SiteExtension.Core.CertificateManager.Authorize(Target target) in c:\Projects\LetsEncrypt-SiteExtension\LetsEncrypt-SiteExtension\LetsEncrypt.SiteExtension.Core\CertificateManager.cs:518
   LetsEncrypt.SiteExtension.Core.CertificateManager.Auto(Target binding) in c:\Projects\LetsEncrypt-SiteExtension\LetsEncrypt-SiteExtension\LetsEncrypt.SiteExtension.Core\CertificateManager.cs:441
   LetsEncrypt.SiteExtension.Core.CertificateManager.RequestAndInstallInternal(Target target) in c:\Projects\LetsEncrypt-SiteExtension\LetsEncrypt-SiteExtension\LetsEncrypt.SiteExtension.Core\CertificateManager.cs:244
   LetsEncrypt.SiteExtension.Controllers.HomeController.Install(RequestAndInstallModel model) +604
   lambda_method(Closure , ControllerBase , Object[] ) +104
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +169
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
   System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +22
   System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +29
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32
   System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +50
   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225
   System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(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__DisplayClass2b.<BeginInvokeAction>b__1c() +26
   System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(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.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
   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) +36
   System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
   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.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
   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.System.Web.HttpApplication.IExecutionStep.Execute() +9644037
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
4

6 回答 6

11

添加应用注册后,需要将其作为角色分配添加到具有“贡献者”角色的资源组。

如果您忘记了这一点,您将收到上述错误消息。

完成此操作后,请在尝试再次运行 Lets encrypt 扩展之前重新启动应用服务。

于 2017-03-26T21:33:27.740 回答
5

对我来说,当我的 ResourceGroup 与我的 ServicePlanResourceGroup 不同时,就会出现这个问题。

因此,如果这些不相等,则除了 ResourceGroup 之外,您还需要将您创建的 App 注册(您为其创建密钥的 clientId)添加到 ServicePlanResourceGroup。

于 2017-03-10T21:06:01.067 回答
2

我遇到了完全相同的异常并按照以下步骤解决它

  1. 导航到 Azure 门户中的订阅
  2. 选择托管应用服务的订阅
  3. 选择访问控制 (IAM)
  4. 添加新实体
  5. 选择角色贡献者
  6. 搜索服务主体
  7. 添加用户

这立即解决了访问权限不足的异常

更新按照步骤(5.注册服务主体)确保您登录到正确的订阅。就我而言,我在错误的订阅中创建了服务主体,因此该主体未正确分配给正在使用的应用服务

于 2017-09-06T07:15:33.140 回答
1

对于新的 Azure 应用服务,我遇到了同样的问题。事实证明,在运行 Let's Encrypt 向导之前,我必须实际部署一个 Web 应用程序。当空站点的默认 Azure 应用服务登录页面是内容时,向导无法完成其工作。

于 2017-08-14T19:11:02.237 回答
0

我遇到了同样的问题。

我通过不在 Azure Let's Encrypt 站点扩展配置中指定自定义域(例如 lybecker.com)解决了这个问题,而是使用完整的 lybecker.onmicrosoft.com

于 2016-07-06T13:39:59.810 回答
0

这是访问的问题。请检查您提到的文章的5.注册服务主体部分。当使用 LetsEncrypt 页面上的 ApplicationId 完成该部分时,您是否具有相同的 ApplicationId?同样的秘密?检查它,因为这一步看起来有问题。

PS我刚刚检查了那个演练,没有你提到的错误。

于 2016-04-19T21:42:05.770 回答