0

我正在尝试让 Wasabi(企业库自动缩放块)在 Azure 辅助角色中工作。Wasabi worker 角色(Extra Small,完全信任)在同一个服务中扩展不同的 worker 角色。它可以在具有相同配置的本地控制台应用程序中完美运行 - 鉴于错误,证书无法进入 VM。我正在使用最新版本的 Azure SDK、企业库自动缩放块和 Azure 门户。

以下是我根据这些文档采取的步骤:http: //msdn.microsoft.com/en-us/library/hh680937 (v=pandp.50).aspx

  1. 我按照此处的说明创建了一个管理证书:http: //msdn.microsoft.com/en-us/library/gg432987.aspx
  2. 我用私钥导出了 .pfx 并给了它一个密码。
  3. 我将 .cer 上传到门户上的设置->管理证书部分。
  4. 我将带有正确密码的 .pfx 上传到 Cloud Services->(My Service)->Certificates,注意到列出的指纹。
  5. 我创建了一些简单的规则来扩展我的应用程序几个实例,并正确配置服务信息以使用我的新证书。XML 文件位于 blob 存储中。这个确切的配置在我的本地机器上的控制台应用程序中运行良好。
  6. 我使用正确的证书名称和指纹在 Wasabi 角色的配置中添加了一个条目。我将其设置为使用 CurrentUser\My 商店。我确认 .csdef 和 .cscfg 文件已正确更新。
  7. 我使用发布工具将该服务部署到 Azure 上的暂存区。证书配置设置正确显示在角色的配置设置中。
  8. 它不会扩展应用程序。我检查了跟踪条目,在尝试拉取访问管理 API 时出现异常。它正在尝试访问正确的订阅,并且正在尝试在正确的存储中找到正确的证书指纹,因此我的配置正在正确加载。它声称在该商店中找不到具有该指纹的证书。

我尝试了 LocalMachine\My 存储(在角色证书设置和服务信息存储 XML 中配置),我得到了一个不同的异常,即 Azure WASABi SecurityNegotiationException中列出的错误。该修复最终要交给 CurrentUser,所以这对我没有帮助。

我尝试了 CurrentUser\LocalMachine 和不同商店的许多其他组合,所有 CurrentUser 位置都会导致证书未找到,所有 LocalMachine 商店都会导致其他异常。

我三重检查了角色设置、门户(证书页面)和服务信息文件中的指纹,它们都匹配。

然后我启用了远程桌面并登录到 Wasabi 角色实例,并使用 MMC 查看本地计算机和当前用户的证书配置。当我在角色证书设置中选择 LocalMachine 存储时,证书确实显示在 LocalMachine 存储中,这告诉我证书已正确安装在服务中并且指纹匹配。选择 CurrentUser 存储时,证书在任何地方都不可见。这可能是因为 RDP 使用的用户与服务不是同一用户,但它确实与错误匹配。

所以,总结一下:

  1. 证书已正确配置并安装在门户中(订阅的管理证书和服务证书)。
  2. 显然,您必须为 Wasabi 角色使用 CurrentUser 位置,而不是 LocalMachine 位置(根据链接的 SO 问题)。
  3. 当我尝试安装到 CurrentUser 时,证书没有被放置在 VM 中,至少不是角色可以找到它的任何地方。

有任何想法吗?

谢谢!

4

1 回答 1

3

请参阅我对此SO POST的回答。证书必须在 LocalMachine 中,并且由于 SDK 1.8 和 Server2012 角色初始化中的配置更改,您必须以提升的权限运行辅助角色,以授予 NETWORK SERVICE 对证书私钥的访问权限。编辑 ServiceDefinition.csdef

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="blah" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-10.1.8">
  <WorkerRole name="blah" vmsize="Small">
    <Runtime executionContext="elevated" />
    ...      
   </WorkerRole>
</ServiceDefinition>
于 2013-02-12T22:54:22.967 回答