【发布时间】: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 门户成功部署它 - 所以,至少感谢您的解决方法。