适用于多个SSL证书的Azure Cloud Service配置

时间:2012-07-18 20:27:51

标签: azure ssl azure-cloud-services

我创建了一个MVC3项目并附加了一个Azure Cloud Service,用于部署到Azure Web角色。我为PRODUCTION和TEST创建了两个.cscfg文件。这两个服务具有不同的SSL证书和不同的指纹 - 这些证书在相应的.cscfg文件中设置。在我的角色中,我设置了一个https端点,并为SSL证书名称选择了正确的配置设置。

问题 - 除非所有.cscfg文件都包含完全相同的SSL指纹,否则Visual Studio不会发布到Azure上的Web角色。如果我在.cscfg文件中对证书有不同的指纹(对于PRODUCTION和TEST),它拒绝发布说:

  

错误:证书:带有指纹的'SSLCert':用于角色:XXXXX尚未上传到云服务:XXXXX

如何设置配置以允许单独的SSL证书?

3 个答案:

答案 0 :(得分:2)

我想说这是Windows Azure SDK的一个已知问题,目前正在处理中。我没有关于修复程序可用性的任何具体细节,也无法对此进行评论。

上面已经有了一些手动发布包的解决方法,但是如果你想在工具集中解决问题,你可以在构建步骤中转换CSDEF / CSCFG配置文件,如下所述:

http://blogs.msdn.com/b/philliphoff/archive/2012/07/02/transform-windows-azure-service-model-files-during-packaging.aspx

转换配置文件后,您仍然可以使用相同的构建/发布步骤,而不需要手动发布。

答案 1 :(得分:2)

我刚刚使用Igorek对my question here的回答来实现这一点。没有msbuild转换那么强大,但更容易实现。

解决方案是创建与每个服务配置相对应的.csdef文件。然后,在Azure项目的预构建步骤中,将正确的.csdef文件复制到主.csdef文件中。这些自定义.csdef文件可以添加到您的解决方案中,但您必须使用文本编辑器手动执行此操作。

我的每个特定于配置的.csdef文件都包含我的测试和生产SSL证书,但端点定义设置为使用正确的配置。这是必需的,因为Visual Studio会抱怨.csdef文件中缺少的.cscfg文件中引用的证书。这意味着您必须将两个SSL证书上载到Azure门户上的测试和生产服务,但在部署完成后将使用正确的证书。

答案 2 :(得分:0)

我使用的简单解决方案是在我的解决方案中创建两个单独的云项目。我把它们放在一个名为“Manual Deploy”的文件夹中

当我想使用生产证书发布到生产时,我发布了在配置文件中具有正确设置的云项目。 QA也是如此。我甚至为本地开发测试制作了一个单独的云项目。云项目很容易制作,您只需将实际的webrole项目与每个云项目相关联,即可开展业务。