使用Azure SDK 1.7从Visual Studio发布不再有效 - 证书/指纹错误

时间:2012-06-22 06:28:15

标签: visual-studio-2010 azure

我有一个长期的Azure云服务项目,我用它来从Studio将Web和工作人员角色部署到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 PM - 正在连接......   1:25:33 PM - 错误:证书:带有指纹的'cert':对于角色:My.Web尚未上传到云服务:我的测试NC。   1:25:33 PM - 错误:证书:使用Thumbprint进行'加密':对于角色:My.Web尚未上传到云服务:我的测试NC。

请注意,错误中根本没有列出Thumbprint - 出于安全考虑,我没有将其删除。

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

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

更新:我刚刚与微软进行了交谈,我们现在至少已明确了复制步骤:

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

因此,如果[隐藏]的值因为开发,测试和实时的cscfg文件而异,那么当您尝试发布到其中任何一个时(例如测试),您将遇到错误。

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

这似乎是一个缺陷。

答案 1 :(得分:1)

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

我正在上传显示此内容的图片(点击此处查看full resolution image

enter image description here

答案 2 :(得分:0)

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