2016-07-07 57 views
0

我们在使用Azure管理证书时遇到了一些问题。工作自动化的管理证书

我们的Azure帐户包含3个订阅。我们正在Azure TaskScheduler的一个实例下运行其中一个

我们需要为此订阅设置证书,以便能够从我们的ASP.NET应用程序登录到它。我们创建了一个新的自签名证书,并将其上传到上述订阅的Azure设置中,并将BASE64编码版本的.cer(不带私钥)放入我们应用的配置文件中。

当我们用它通过X509Certificate2构造函数创建一个新证书时,它会成功。但是,如果我们尝试在SchedulerClient的凭据中使用此证书对象,它将失败,并显示以下错误消息:

ForbiddenError:服务器未能对请求进行身份验证。验证证书是否有效并与此订阅相关联。

重要的是要知道此代码以前与另一个证书一起工作,但我们需要更改证书以解决其他问题。看起来好像新证书未被识别为与订阅相关联,即使它出现在Azure门户上此订阅的管理证书列表中。

此URL:https://manage.windowsazure.com/publishsettings/index?client=vs&schemaversion=2.0每个订阅只会返回一个证书,但是MSDN指南说每个订阅最多允许有100个管理证书。

我们现在应该做什么?我们是否必须在Azure管理中做一些特殊的事情来将新证书“分配”给调度程序或订阅?我们如何让Azure订阅识别新证书以进行身份​​验证?

回答

0

似乎您无法使用管理证书在Azure门户的设置中上传管理证书后成功管理Azure服务。该问题与Java azure free trial account not able to authenticate via java sdk的其他SO线程非常相似。

我的建议是试图引用article重新生成一个新的自签名证书并将其上载到Azure经典门户的设置中。请确保上传的管理证书存在于您的设置的MANAGEMENT CERTIFICATES选项卡中,如下所示。

enter image description here

然后,您可以参照reference将证书添加到HTTP请求或HttpClient的(见下面的代码)的构造SchedulerClient(HttpClient)

X509Certificate2 certificate = GetStoreCertificate("<thumbprint>"); 
var clientHandler = new WebRequestHandler() 
clientHandler.ClientCertificates.Add(certificate); 
var client = new HttpClient(clientHandler)