问题:如何在一个Azure Cloud Service部署中使用HTTPS在两个网站之间进行通信?
详细说明:
我已经构建了Azure Cloud Service部署(一个“subdomain.cloudapp.net”),以便通过使用不同的端口在部署中运行两个单独的网站。
站点1是我所谓的服务站点,它是一个标准的ASP.NET站点,它承载一堆没有HTML或ASPX页面的WCF服务(重定向到站点2的default.aspx页面除外)。站点1在端口80上运行。
站点2是我的主站点并托管一个Silverlight应用程序,该应用程序使用站点1中的服务来访问数据库和处理结果。它只能通过HTTPS访问并使用端口443.
这两个站点都在Visual Studio Azure解决方案中定义,该解决方案具有两个端点,每个端口一个端点。此外,每个端点都通过Azure项目中的ServiceDefinition.csdef配置文件与VS解决方案的两个网站项目内部相关联。
我已经购买了我的安全证书,并通过域名重定向和我的DNS上的CName映射将其与我在站点2中使用的域名相关联。
使用映射的域名和加密连接访问站点2可以通过HTTPS很好地工作。但是,当我尝试从站点2到站点1进行内部服务调用时,我将从HTTPS连接转到HTTP连接,因为我在站点1上没有SSL证书。因此,当站点2生成时对站点1的服务调用,它尝试提供clientaccesspolicy.xml。这会导致Internet Explorer显示“混合内容”消息(由于HTTPS / HTTP混合)。底线是我需要摆脱这个弹出提示。我知道它可以在客户端禁用,但有超过一千个用户,我不能依赖他们能够关闭该消息。我需要在服务器端消息消失。
回到问题,是否有办法在一个Azure Cloud Service中使用来自站点2的SSL访问站点1?听起来我需要做的是为站点1分配SSL证书。但是,我遇到了两个障碍。首先,我无法将SSL证书分配给wildcard.clouapp.net域名。其次,我无法将第二个域名分配给Azure云服务,因为我无法将域名转发到特定端口(请记住,站点2已经在使用域转发)。
我可以通过将两个站点分解为他们自己的云服务来完成解决方案,但我不愿意,因为它会使我的成本翻倍。有没有关于如何通过保护站点1或其他方法来完成获取此“混合内容”消息的建议?