无法在本地Azure Web角色VM中添加证书

时间:2013-04-24 09:05:57

标签: azure certificate webrole

我在从代码管理Azure证书方面遇到了一些困难。 实际上,我正在尝试使用Azure REST服务API(例如创建HTTP请求),以便从我的Azure网站了解我的服务状态。

它在本地调试中运行良好,但我的Web角色接缝对证书管理器有一些限制。贝娄是我的工作:

// this method stores a certificate from the resources
// to the local certificates manager
private X509Certificate2 StoreCertificate(Certificates certName)
{
    X509Certificate2 newCert = null;

    // get certificate from resources
    newCert = this.GetCertificateFromResources(certName);

    // store it into the local certificate manager
    if (newCert != null)
    {
        var store = new X509Store(
               StoreName.TrustedPeople,
               StoreLocation.LocalMachine
            );

        store.Open(OpenFlags.ReadWrite);
        store.Add(newCert);
    }

    // reset ref and try to load it from manager
    newCert = null;

    newCert = this.GetCertificate(certName);

    return newCert;
}

当我尝试添加证书时,拒绝访问错误。

有什么想法吗?我可以将证书存储到Azure VM中吗? 我应该使用特殊的位置存储这些吗?

3 个答案:

答案 0 :(得分:1)

您使用的是Cloud Service(网络/工作人员角色)吗?如果是这样,哪个OS系列?我已经看到一些报告,如果使用OS系列3的工作者角色,您需要使用提升的权限运行该角色,以便从本地证书存储区读取证书。不确定这是否也适用于Web角色并添加到证书库。

是否已通过Azure管理门户(或通过REST API或PowerShell)添加服务证书?

答案 1 :(得分:1)

我发现了很多东西:

  1. 我在网站上部署代码,因此无法将证书添加到Azure中的共享虚拟机
  2. 我尝试在远程桌面会话中连接到VM,并手动添加了证书。
  3. 即使在这种情况下,我在InvalidOperationException中有一个(403)Forbidden错误。

    所以这是当前状态:

    • 已创建证书(makecert)并在托管我的Web角色的VM中手动添加(在服务中部署)
    • 此证书已上载到Azure帐户证书和Azure服务证书(部署我的Web角色的证书)
    • 我的代码中添加了此证书的指纹,我可以在执行代码时访问证书

    所以有2个问题:

    1. 我的证书有什么用吗?
    2. 当我在Azure模拟器中本地尝试我的Web角色时,一切正常。在发布/部署步骤期间是否有要更新的特殊设置?
    3. 感谢您的帮助。

答案 2 :(得分:1)

为了节省其他开发人员的时间,以下是我为解决主要问题所做的工作:

  1. 连接到部署Web角色的VM:see there
  2. 创建证书:see there
  3. 最终使用证书管理器(mmc.exe)
  4. 然后证书可从代码中获得。