このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
エクスポート (0) 印刷
すべて展開

HTTPS エンドポイントでの SSL 証明書の構成

更新日: 2014年2月

Windows Azure サービスのロールに HTTPS エンドポイントを追加し、それを SSL 証明書に関連付けるには、以下の手順を実行する必要があります。

  1. 証明機関から SSL 証明書を取得します。詳細については、「SSL 証明書の取得」を参照してください。

  2. ホステッド サービスの証明書ストアに証明書を追加します。詳細については、「Windows Azure への証明書のアップロード」セクションを参照してください。

  3. サービス構成ファイルに証明書のサムプリントを追加します。詳細については、「サービス構成ファイルへの証明書のサムプリントの追加」セクションを参照してください。

  4. サービス定義ファイルを更新して、ホステッド サービスの証明書を指定します。詳細については、「サービス定義ファイルの証明書の追加」セクションを参照してください。

  5. サービス定義ファイルに HTTPS エンドポイントを構成し、それを証明書に関連付けます。詳細については、「HTTPS エンドポイントの構成」セクションを参照してください。

  6. トラフィックをサービスにリダイレクトするために、SSL 証明書が発行されたドメイン名の CNAME レコードを設定します。CNAME の構成の詳細については、「Windows Azure クラウド サービスのカスタム ドメイン名の構成」を参照してください。

開発環境で HTTPS エンドポイントをテストすると、すべての認証が 127.0.0.1 に提供されている自己署名証明書を使用して行われます。詳細については、このトピックの後半にある「コンピューティング エミュレーターでの HTTPS エンドポイントのテスト」セクションを参照してください。

Windows Azure で HTTPS エンドポイントのセキュリティを保護するために使用する SSL 証明書は、次の特徴を持つ必要があります。

  • 証明書は秘密キーを含む必要があります。

  • 証明書の目的は、サーバー認証である必要があります。

  • 証明書の件名はサービスへのアクセスに使用されるドメイン名と一致する必要があります。

  • 2048 ビット以上の暗号化キーが必要です。

noteメモ
Windows Azure Tools for Microsoft Visual Studio を使用してサービスを開発している場合、ロールのプロパティ ページを使用して HTTPS エンドポイントを構成することができます。

Windows Azure には、ホステッド サービスの証明書の管理に使用できる、セキュリティで保護された証明書ストアが用意されています。証明書をサービスに関連付け、ストアに証明書をアップロードすると、Windows Azure はロール インスタンスが実行されている VM に証明書を自動的に配置します。証明書ストアの詳細については、「証明書の管理」を参照してください。

証明書ストアに証明書をアップロードするには、「証明書ストアに対する新しい証明書の追加」の手順に従います。

サービス構成ファイルでは、証明書のサムプリントを使用して、証明書の論理名とストアの証明書をペアで指定します。サムプリントをサービス構成ファイルで管理することで、サービス パッケージから証明書のデータを分離し、開発者や 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>

証明書のサムプリントの取得方法の詳細については、「Windows Azure のサービス証明書を作成する」の「X.509 v3 証明書の作成」を参照してください。

証明書を HTTPS エンドポイントに関連付けるには、サービスで証明書の識別に使用される論理名を指定する必要があります。さらに、ロールのインスタンスを実行している仮想マシン上における証明書の保存場所を指定する必要があります。

サービス定義ファイルで、ロールの定義に 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 として示された証明書) をインストールする VM 上の場所を示します。

証明書の name 属性には任意の名前を選択できます。この名前は、証明書を参照するために HTTPS エンドポイントの定義とサービス構成ファイルでのみ使用します。

HTTPS エンドポイントをロールに追加するには、サービス定義ファイルを編集し、ロールの Endpoints コレクションに InputEndpoint 要素を追加します。エンドポイントの名前、プロトコル (HTTPS)、およびポートを指定し、ロールの Certificates コレクションで定義した証明書の論理名を指定します。

次の手順では、ポート 80 でリッスンする Web ロールの HTTP 入力エンドポイントを追加し、ポート 443 でリッスンする HTTP エンドポイントを定義する方法について説明します。

  1. テキスト エディターでサービスの ServiceDefinition.csdef ファイルを開きます。

  2. Certificate 要素を含む Certificates コレクション要素を、SSL でセキュリティを保護しているロール要素に追加します。name 属性に証明書の名前を設定します。storeLocation 属性と storeName 属性を設定して、仮想マシン内の証明書の場所を指定します。

        
    <Certificates>
       <Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
    
    
  3. InputEndpoint 要素を含む Endpoints コレクション要素を、SSL でセキュリティを保護しているロール要素に追加します。HttpsIn 入力エンドポイントの certificate 属性を、証明書コレクションに指定した証明書名と同じ名前に設定します。

       
    <Endpoints>
       <InputEndpoint name="HttpIn" protocol="http" port="80" />
       <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="MySSLCert" />
    </Endpoints>
    
    
  4. ファイルを保存します。

完了したサービス定義は、次の例のようになります。


<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>

コンピューティング エミュレーターは、既定では、IP アドレス 127.0.0.1 (localhost に対応) の自己署名証明書に依存します。したがって、前の手順で構成した証明書のインストールや構成で問題が発生した場合は、カスタム証明書ではなく、既定でこの自己署名証明書を使用して認証が行われます。別の証明書を定義してあるにもかかわらず、既定で 127.0.0.1 の SSL 証明書が使用される場合は、カスタム証明書に問題がなく、正しくインストールされていることを確認してください。

コンピューティング エミュレーターで使用される自己署名証明書は、既定ではルート信頼されていません。HTTPS を参照する際、ローカル コンピューター上の信頼できるルート証明機関ストアに証明書を追加していない限り、証明書エラーが発生します。このエラーは無視してかまいませんが、信頼できるルートに証明書を追加することで、このエラーを回避することもできます。

Windows Azure コンピューティング エミュレーターでホステッド サービスを実行する場合、SSL ポートが 443 以外 (通常は 444 か 445) のポートに設定されている場合があります。HTTPS エンドポイント 443 の場合、指定したポートを使用できなければ、コンピューティング エミュレーターは空いているポートが見つかるまで、ポート番号を大きくしていきます。

ポート 443 を使用するには、そのポートを使用しているアプリケーションまたは Web サイトをシャットダウンし、コンピューティング エミュレーターを再起動して使用できるポートのリストを再読み込みする必要があります。コンピューティング エミュレーターをシャットダウンして再起動しても、使用できるポートのリストが再読み込みされるわけではありません。

ポート 443 が使用されているかどうかを調べるには、コマンド プロンプトを開いて NETSTAT コマンドを使用します。NETSTAT コマンドの詳細については、「Netstat」を参照してください。

証明機関によって発行された証明書がない場合は、自己署名証明書を生成して Windows Azure サービスで使用できます。

noteメモ
この自己署名証明書は、開発環境で使用される自己署名証明書とは異なります。開発環境で使用される証明書は、あらかじめ用意されており、開発環境での認証だけに使用されます。

Windows Azure で自己署名証明書に関連付けられている HTTPS エンドポイントを参照すると、ブラウザーに証明書エラーが表示されます。証明機関によって署名された証明書を使用することで、この問題は回避できますが、ひとまずこのエラーは無視してもかまいません。

関連項目

表示:
© 2015 Microsoft