1

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

我正在使用我的证书的指纹从证书存储中加载它并创建我的凭据,但我的请求不断被以下消息拒绝:

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

我已经做了我能想到的一切来解决这个问题,但没有任何效果。

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

4

3 回答 3

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;
            }
        }

使用此代码块从 Publish Settings 文件创建类型为 CertificateCloudCredentials 的对象。成功创建对象后,使用以下代码块创建 computeManagementClient。

var computeManagementClient = new ComputeManagementClient(creds);

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

于 2014-03-28T13:06:21.823 回答
0

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

您需要先将证书安装到本地计算机中,然后才能使用它(根据我的经验)。您是否考虑过切换到使用 TokenCloudCredential,这将允许您使用ADAL NuGet 包将 MAML粘合到 AAD ?这可能会帮助您减轻与证书相关的问题。

于 2014-04-24T04:36:26.473 回答
0

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

于 2014-03-24T06:15:24.120 回答