Windows Azure での HTTPS エンドポイントの構成
Windows Azure Platform
Windows Azure サービスのロールに HTTPS エンドポイントを追加し、それを証明書に関連付けるには、以下の手順を実行する必要があります。
- サービス定義ファイルで証明書を識別する
- サービス定義ファイルで HTTPS エンドポイントを構成し、それに証明書を関連付ける
- Windows Azure に証明書をアップロードする
- サービス構成ファイルに証明書の拇印を提供する
これらの手順は、Windows Azure で使用するように構成した証明書に適用されます。開発環境で HTTPS エンドポイントをテストしている間は、127.0.0.1 に対して提供される自己署名証明書を使用してすべての認証が行われます。詳細については、このトピックの後半の「開発環境での HTTPS エンドポイントのテスト」を参照してください。
注意
Windows Azure Tools for Microsoft Visual Studio を使用してサービスを開発している場合は、ロールのプロパティ ページを使用して HTTPS エンドポイントを構成できます。HTTPS エンドポイントを構成する手順の説明については、「方法: Windows Azure Cloud Service への HTTPS エンドポイントの追加」を参照してください。
サービス定義ファイルでの証明書の識別
HTTPS エンドポイントに証明書を関連付けるには、サービス内で証明書の識別に使用される論理名を指定する必要があります。また、ロールのインスタンスを実行している VM で証明書を保存する場所も指定する必要があります。
サービス定義ファイルで、ロールの定義に Certificates 要素を追加します。Certificates コレクション内に、証明書のエントリを追加します。次に例を示します。
<WorkerRole name="MyWorkerRole" vmsize="Small">
<ConfigurationSettings>
. . .
</ConfigurationSettings>
<LocalResources>
. . .
</LocalResources>
<Endpoints>
. . .
</Endpoints>
<Certificates>
<Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
</Certificates>
</WorkerRole>
</ServiceDefinition>
この例では、保存場所は LocalMachine に設定され、ストア名は My に設定されています。この 2 つの属性は、証明書 (ここでは MySSLCert
) がインストールされる場所を示します。
証明書の name 属性には、任意の名前を指定できます。この名前は、HTTPS エンドポイントの定義とサービス構成ファイルで証明書を参照するためだけに使用されます。
HTTPS エンドポイントの構成
HTTPS エンドポイントをロールに追加するには、サービス定義ファイルを編集し、ロールの Endpoints コレクションに InputEndpoint 要素を追加します。エンドポイントの名前、プロトコル (HTTPS)、およびポートを指定し、ロールの Certificates コレクションで定義した証明書の論理名を指定します。次に例を示します。
<ServiceDefinition name="MyService">
<WorkerRole name="MyWorkerRole">
<ConfigurationSettings>
. . .
</ConfigurationSettings>
<LocalResources>
. . .
</LocalResources>
<Endpoints>
<InputEndpoint name="HttpIn" protocol="http" port="80" />
<InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="MySSLCert" />
</Endpoints>
<Certificates>
<Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
</Certificates>
</WorkerRole>
</ServiceDefinition>
Windows Azure への証明書のアップロード
Windows Azure は、ホスト サービスの証明書の管理に使用できる、セキュリティで保護された証明書ストアを提供します。証明書をサービスに関連付け、その証明書をストアにアップロードすると、Windows Azure は、ロール インスタンスが実行されている VM にその証明書を自動的に展開します。証明書ストアの詳細については、「Windows Azure 証明書ストアの操作」を参照してください。
証明書ストアに証明書をアップロードするには、次の手順に従います。
- Web ブラウザーで、Windows Azure ポータルに移動します。
- Windows Azure サービスの概要ページを表示します。
- [Certificates] セクションで、[Manage] リンクをクリックします。
- ローカルにエクスポートされた証明書ファイルを見つけます。証明書は .pfx ファイルとしてエクスポートされる必要があり、エクスポートされた証明書には秘密キーが含まれている必要があります。
- 秘密キーのパスワードを入力します。
- 証明書をアップロードします。
サービス構成ファイルへの証明書の拇印の追加
サービス構成ファイルは、証明書の拇印を使用して、サービス定義ファイルで指定された証明書の論理名とストア内の証明書を対応付けます。拇印をサービス構成ファイルで管理することで、証明書のデータがサービス パッケージから分離され、開発者や IT 管理者はサービスを再展開しなくても証明書を更新できるようになります。
サービス構成ファイルで証明書と証明書の拇印をリストするには、構成ファイルを編集して、ロールのエントリに Certificates コレクションを追加します。Certificates コレクション内に Certificate 要素を追加し、証明書の論理名を指定します。サービス定義ファイルで指定した名前と同じ名前を使用してください。最後に、証明書の拇印と、拇印の生成に使用されるアルゴリズムを指定します。次に例を示します。
<ServiceConfiguration serviceName="MyService">
<Role name=" MyWorkerRole">
<Instances count="5" />
<ConfigurationSettings>
. . .
</ConfigurationSettings>
<Certificates>
<Certificate name="MySSLCert" thumbprint="8420C0773626D5137A820156EB5BD9D6FDB9BEE9" thumbprintAlgorithm="sha1"/>
</Certificates>
</Role>
</ServiceConfiguration>
開発環境での HTTPS エンドポイントのテスト
開発環境は、IP アドレス 127.0.0.1 (既定では localhost に対応) の自己署名証明書に依存します。したがって、開発環境で HTTPS エンドポイントをテストする場合は、前の手順で構成した証明書ではなく、この自己署名証明書を使用して認証を行います。サービス定義とサービス構成で指定した証明書は、Windows Azure 内だけでテストすることができます。
開発環境で使用される自己署名証明書は、既定ではルートが信頼されていません。Web ブラウザーで HTTPS エンドポイントに移動すると、ローカル コンピューター上の信頼されたルート証明機関ストアに証明書を追加していない限り、Web ブラウザーで証明書エラーが発生します。このエラーは無視してかまいませんが、信頼されたルートに証明書を追加することで、このエラーを回避することもできます。開発環境の証明書を信頼されたルートに追加する方法については、「方法: Windows Azure Cloud Service への HTTPS エンドポイントの追加」を参照してください。
サービスでの自己署名証明書の使用
証明機関によって発行された証明書がない場合は、自己署名証明書を生成して Windows Azure サービスで使用できます。IIS マネージャーを使用して自己署名証明書を作成する方法については、「IIS 7 で SSL を設定する方法」を参照してください。証明書を .pfx ファイルにエクスポートする際は、必ず証明書の秘密キーをエクスポートしてください。
この自己署名証明書は、開発環境で使用される自己署名証明書とは異なります。開発環境で使用される証明書は、あらかじめ用意されており、開発環境の認証だけに使用されます。
Windows Azure で自己署名証明書に関連付けられている HTTPS エンドポイントを参照すると、ブラウザーに証明書エラーが表示されます。証明機関によって署名された証明書を使用することで、この問題は回避できますが、ひとまずこのエラーは無視してもかまいません。
参照
概念
サービス証明書の管理
Windows Azure 証明書ストアの操作
ページのトップへ