Azure管理库,拒绝证书

时间:2014-03-24 04:07:10

标签: azure certificate azure-management

我尝试使用Azure管理库NuGet包使用ComputeManagementClient.UpgradeByNameAsync升级部署。

我使用我的证书的指纹从证书存储区加载它并创建我的凭据,但我的请求一直被拒绝,并显示以下消息:

  

服务器无法验证请求。验证证书是否有效并与此订阅相关联。

我已经做了我能想到的一切,但没有任何工作。

我已经四次检查我的指纹是否正确,并且证书显示在azure的管理证书列表中。关于我可能出错的地方的任何想法?

3 个答案:

答案 0 :(得分:1)

public static CertificateCloudCredentials FromPublishSettingsFile(string path, string subscriptionId)
        {
            try
            {
                var profile = XDocument.Load(path);
                var certificate = new X509Certificate2(
                    Convert.FromBase64String(profile.Descendants("PublishProfile").First()
                    .Attribute("ManagementCertificate").Value));
                return new CertificateCloudCredentials(subscriptionId, certificate);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

使用此代码块从“发布设置”文件创建CertificateCloudCredentials类型的对象。成功创建对象后,使用以下代码块创建computeManagementClient。

var computeManagementClient = new ComputeManagementClient(creds);

虽然计算管理客户端仅接受SubscriptionCloudCredentials,但CertificateCloudCredentials是兼容的并且将被接受。

答案 1 :(得分:0)

不确定为什么它不适用于证书存储,但另一种方法是使用* .publishsettings文件附带的指纹进行订阅。您可以使用https://windows.azure.com/download/publishprofile.aspx

下载此文件

答案 2 :(得分:0)

斯里兰卡的回答是相对正确的。我blogged关于将MAML与发布设置文件一起使用,其方式比上面提供的Sri更加冗长,如果您想使用自己的发布设置文件尝试解决方案,请使用一些示例代码。

您需要先将证书安装到本地计算机上才能使用它(根据我的经验)。您是否考虑过切换到使用TokenCloudCredential,这可以让您使用ADAL NuGet package将MAML粘贴到AAD?这可能有助于您缓解与证书相关的问题。