将管理证书与azure REST API一起使用

将管理证书与azure REST API一起使用,azure,azure-management-api,Azure,Azure Management Api,我正在我的应用程序中使用azure服务管理REST API。我在azure上上传了管理证书,并在本地有一份副本。 我将证书保存在应用程序本身的一个单独文件夹(AzureCertificate)中,并引用该位置。 e、 g: 字符串certificatePath=Server.MapPath(“~/AzureCertificate/”)+ 认证名称 X509Certificate2 certificate=新的X509Certificate2(certificatePath) AzureCerti

我正在我的应用程序中使用azure服务管理REST API。我在azure上上传了管理证书,并在本地有一份副本。 我将证书保存在应用程序本身的一个单独文件夹(AzureCertificate)中,并引用该位置。 e、 g:

字符串certificatePath=Server.MapPath(“~/AzureCertificate/”)+ 认证名称

X509Certificate2 certificate=新的X509Certificate2(certificatePath)

AzureCertificate--文件夹名称certificateName- 菌丝体名称

当我在本地开发环境中运行应用程序时,它工作正常。但当我在azure网站上部署相同的组件时,我得到了以下错误

远程服务器返回错误:(403)禁止

这就是我提出请求的方式

字符串uri=APIRL+subscriptionId+“/services/hostedservices”

HttpWebRequest req=(HttpWebRequest)HttpWebRequest.Create(uri)

X509Certificate2 certificate=新的X509Certificate2(certificatePath)

请求客户端证书。添加(证书)

请求标题添加(“x-ms-version”、“2009-10-01”);HttpWebResponse=

(HttpWebResponse)req.GetResponse()

但它在最后一行(req.GetResponse())抛出上述异常

我们可以这样使用管理证书吗


我的要求是开发一个使用azure REST API并在azure中部署的应用程序。

我建议使用azure管理SDK。您可以从名为Microsoft.WindowsAzure.Management的nuget软件包安装该软件,并使用适当的类/方法执行您想要执行的操作

如果您确实需要通过HTTP和RESTAPI直接执行某些操作,我建议使用
HttpClient
而不是
HttpWebRequest
。(
HttpClient
是另一个名为Microsoft.Net.Http的nuget包。然后,您可以使用
SubscriptionCloudCredentials
(通过
ManagementClient.Credentials
属性)为您填充Http请求。例如:

var client = new ManagementClient(
    new CertificateCloudCredentials(subscriptionId, certificate));
//...
var requestMessage = new HttpRequestMessage(HttpMethod.Get, apiURL);
await client.Credentials.ProcessHttpRequestAsync(requestMessage,
    CancellationToken.None);
var httpClient = new HttpClient();
HttpResponseMessage response = await httpClient.SendAsync(requestMessage);
// TODO: process response, maybe:
var responseText = response.AsString();

我建议您在可能的情况下使用
客户端

我还发现,以正确的方式创建证书以与管理API配合使用非常重要-在使用此脚本创建证书之前,我收到了403个错误:

makecert -r -pe -a sha1 -n "CN=Windows Azure Authentication Certificate" -ss my -len 2048 -sp "Microsoft Enhanced RSA and AES Cryptographic Provider" -sy 24 ManagementApiCert.cer
这是我在这里得到的:它已经有几年的历史了,但对我有用,而我试过的其他更新版本却没有


另外,请确保您在门户的“设置”中的“管理证书”下上载证书,它不是SSL或远程访问证书。

您正在尝试访问哪个APIRL?但是,它可能仍然需要证书吗?我正在使用()是的,这是您保存的证书参数。谢谢