8

我有一个长期存在的 Azure 云服务项目,用于将 Web 和辅助角色从 Studio 部署到 Azure。云服务定义和云配置文件包括有关已上传到云服务的证书的信息。因此,在服务定义中:

<Certificates>
  <Certificate name="cert" storeLocation="LocalMachine" storeName="My" />
  <Certificate name="encryption" storeLocation="LocalMachine" storeName="My" />
</Certificates>

并在服务配置中:

<Certificates>
  <Certificate name="cert" thumbprint="[hidden]" thumbprintAlgorithm="sha1" />
  <Certificate name="encryption" thumbprint="[hidden]" thumbprintAlgorithm="sha1" />
</Certificates>

很长一段时间以来,我一直将这些配置和证书发布到同一个云服务,没有任何问题。

现在,我刚刚升级到 Visual Studio 2010 sp1 的 Azure 1.7 SDK(2012 年 6 月)。一旦我升级了我的云服务项目 [在属性中,单击“升级”],由于明显的证书错误,我不再能够部署:

下午 1:25:28 - 正在连接... 下午 1:25:33 - 错误:证书:带有指纹的“证书”:用于角色:My.Web 尚未上传到云服务:我的测试 NC。下午 1:25:33 - 错误:证书:带有指纹的“加密”:角色:My.Web 尚未上传到云服务:My Test NC。

请注意,错误中根本没有列出指纹 - 出于安全目的,我没有在此处删除它。

如果我编辑项目文件并且除了将 1.7 更改为 1.6 之外没有任何其他更改,则 Studio 的部署再次完美运行。

Visual Studio sp1 和 Azure 1.7 似乎存在一些问题,但我没有发现任何其他人有类似问题的证据。

更新:我刚刚和微软谈过,我们现在至少对复制步骤很清楚:

  • 必须有多个服务配置(例如“开发”和“测试”)
  • 不同的环境必须有不同的证书(因此有不同的指纹)。

由于可能不想将生产证书存储在开发机器上(尤其是因为人们不希望开发机器能够解密加密的生产值 - 例如,考虑一下,如果开发笔记本电脑丢失了),不同的证书在不同的环境中似乎符合标准的最佳实践。

因此,在这一点上,微软将考虑这是否是需要解决的问题。同时,Azure 1.7 SDK 的解决方法是:(1)不要使用 Studio 的“发布”;(2) 不要使用多个服务配置;或(3)在所有环境中使用相同的证书(不是我个人推荐的)。

4

3 回答 3

1

“答案”似乎是,当您在同一个项目中有多个 cscfg 文件时,对相同的证书名称使用不同的指纹(显然可能想要这样做),您将遇到此问题。

<Certificates>
    <Certificate name="cert" thumbprint="[hidden]" thumbprintAlgorithm="sha1" />
    <Certificate name="encryption" thumbprint="[hidden]" thumbprintAlgorithm="sha1" />
</Certificates>

因此,如果 [hidden] 的值在例如用于开发、测试和实时的 cscfg 文件中有所不同,那么当您尝试发布到其中任何一个(例如测试)时,您都会遇到您提到的错误。

如果您使用管理配置和删除删除 dev 和 live 的 cscfg 文件,然后尝试使用剩余的测试配置文件进行发布,发布将起作用(至少对我而言。)

这似乎是一个缺陷。

于 2012-06-30T20:27:10.103 回答
1

当可以看到此问题时,我们发现了另一种情况。在 VS2012.2 中,证书的指纹是小写的,但似乎 Azure 管理 API 要求它是大写的。这是管理门户/API 端的一个错误,因为在任何情况下都可能存在指纹 - 案例本身没有信息内容,因此执行检查的一方(我相信 Azure Fabric 控制器)的检查应该与大小写无关)。

我正在上传显示此内容的图像(单击此处查看全分辨率图像

在此处输入图像描述

于 2013-06-19T23:30:10.743 回答
0

Kent,除了您提供的解决方法之外,您还可以在构建步骤中转换配置文件。Phil Hoff 在http://blogs.msdn.com/b/philliphoff/archive/2012/07/02/transform-windows-azure-service-model-files-during-packaging有一篇博文讨论如何做到这一点。 .aspx _

于 2012-07-19T14:21:56.883 回答