質問: 1 つの Azure Cloud Service デプロイ内で HTTPS を使用して 2 つの Web サイト間で通信するにはどうすればよいですか?
詳細:
異なるポートを使用して、デプロイ内で 2 つの別個の Web サイトを実行するような方法で、Azure クラウド サービスのデプロイ (1 つの「subdomain.cloudapp.net」) を設計しました。
サイト 1 は、私がサービス サイトと呼んでいるもので、HTML ページや ASPX ページを持たない (サイト 2 にリダイレクトする default.aspx ページを除く) 一連の WCF サービスをホストする標準の ASP.NET サイトです。サイト 1 はポート 80 で実行されています。
サイト 2 は私のメイン サイトであり、サイト 1 のサービスを使用してデータベースにアクセスし、結果を処理する Silverlight アプリケーションをホストします。HTTPS 経由でのみアクセスでき、ポート 443 を使用します。
これらのサイトはどちらも、ポートごとに 1 つずつ、2 つのエンドポイントを持つ Visual Studio Azure ソリューションで定義されています。さらに、各エンドポイントは、Azure プロジェクトの ServiceDefinition.csdef 構成ファイルを介して、VS ソリューション内の 2 つの Web サイト プロジェクトに関連付けられています。
セキュリティ証明書を購入し、ドメイン名のリダイレクトと DNS での CName マッピングによって、サイト 2 で使用しているドメイン名に関連付けました。
マップされたドメイン名と暗号化された接続を使用したサイト 2 へのアクセスは、HTTPS 経由でうまく機能します。しかし、サイト 2 からサイト 1 に内部的にサービス呼び出しを行おうとすると、サイト 1 に SSL 証明書がないため、HTTPS 接続から HTTP 接続に移行します。サイト 1 へのサービス呼び出しでは、clientaccesspolicy.xml を提供しようとします。これにより、Internet Explorer に「混合コンテンツ」メッセージが表示されます (HTTPS/HTTP が混在しているため)。要するに、このポップアップ プロンプトを取り除く必要があるということです。クライアント側で無効にできることは知っていますが、1,000 人を超えるユーザーがいるため、メッセージをオフにできるとは限りません。サーバー側でメッセージを消す必要があります。
質問に戻りますが、すべて 1 つの Azure クラウド サービス内で、サイト 2 から SSL を使用してサイト 1 にアクセスする方法はありますか? 私がしなければならないことは、サイト 1 に SSL 証明書を割り当てることです。ただし、2 つの障害があります。まず、SSL 証明書を wildcard.clouapp.net ドメイン名に割り当てることができません。次に、特定のポートにドメイン名を転送できないため、Azure クラウド サービスに 2 番目のドメイン名を割り当てることができません (いずれにせよ、サイト 2 は既にドメイン転送を使用していることを思い出してください)。
2 つのサイトを独自のクラウド サービスに分割することで解決策を達成できましたが、費用が 2 倍になるため、そうしませんでした。サイト 1 を保護するか、その他の方法で、この「混合コンテンツ」メッセージを非表示にする方法について何か提案はありますか?