【问题标题】:publishing from Visual Studio with Azure SDK 1.7 no longer works - certificate/thumbprint error使用 Azure SDK 1.7 从 Visual Studio 发布不再有效 - 证书/指纹错误
【发布时间】:2012-06-24 10:53:27
【问题描述】:

我有一个长期存在的 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 尚未上传到云服务:My Test NC。 下午 1:25:33 - 错误:证书:使用指纹“加密”:角色:My.Web 尚未上传到云服务:My Test NC。

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

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

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

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

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

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

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

【问题讨论】:

  • 我也遇到过类似的问题。而且因为它是关于生产部署的,所以我没有太多时间进行调查。只需创建包(创建包)而不是发布。然后我部署了我的包(升级),它终于奏效了。我不会将此作为答案发布,因为它不是真正的答案,而只是确认其他人也面临类似问题,以及可能的解决方法。
  • 我还能够创建包(在 1.7 中)并通过 azure 门户成功部署它 - 所以,至少感谢您的解决方法。

标签: visual-studio-2010 azure


【解决方案1】:

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

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

【讨论】:

  • 感谢您的提示。这正是我所需要的。它解决了我的问题
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

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

    这似乎是一个缺陷。

    【讨论】:

    • 你是对的。我一直在尝试向 Microsoft 记录问题,但他们一直忽略复制步骤并一直要求我重新上传证书、检查指纹是否匹配等。我认为他们迟早会解决修复它。
    • 我同意!对于相同的确切标准,我们有相同的确切问题。 1) 环境的多个配置 2) 多个指纹。感谢有关它的工作的帖子也对我有用。我将尝试 user1493512 的建议g,但我不太确定我是否完全理解他/她的帖子的含义。
    • 这个问题显然已经在微软的产品团队中得到解决——我上次听说,他们正在考虑在下一个 SDK 中解决这个问题,并建议“最好的解决方法是确保所有的证书配置文件保持不变”(?!)。
    猜你喜欢
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 2016-02-13
    相关资源
    最近更新 更多