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

标签 visual-studio-2010 azure

我有一个长期存在的 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 PM - Connecting... 1:25:33 PM - Error: Certificate: ‘cert’ with Thumbprint: for Role: My.Web has not been uploaded to the cloud service: My Test NC. 1:25:33 PM - Error: Certificate: ‘encryption’ with Thumbprint: for Role: My.Web has not been uploaded to the cloud service: My Test NC.

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

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

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

更新:我刚刚与 Microsoft 交谈过,我们现在至少清楚了复制步骤:

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

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

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

最佳答案

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

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

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

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

这似乎是一个缺陷。

关于visual-studio-2010 - 使用 Azure SDK 1.7 从 Visual Studio 发布不再有效 - 证书/指纹错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11151137/

相关文章:

visual-studio-2010 - 什么会得到编辑并继续工作?

c++ - stringstream::in 语法错误

azure - 为 Kubernetes 中运行的剩余映射器创建假数据

azure - 如何使用 Azure CLI 将应用服务从一个应用服务计划更改为另一应用服务计划

Azure 上的 WCF 服务

c++ - DHCP C++程序

c++ - Visual Studio 项目文件

c - 链接列表 - 访问冲突......在哪里?

azure - 如何使用 VSTS DSC 配置自动将软件安装到 Azure VM 上

Asp.net core 邮件包