Windows Azure 証明書ストアの操作

Windows Azure Platform

Windows Azure は、サービス固有の証明書をロール インスタンスに自動展開できる安全な証明書ストアを提供します。Windows Azure の各サブスクリプションに、サービス証明書をアップロードできる証明書ストアが関連付けられています。証明書ストアはホスト サービスからもパッケージからも独立しているため、証明書を格納する際に、その証明書をサービスが使用中かどうかは影響しません。

証明書はサービスから独立して管理できます。また、複数の担当者によって管理できます。たとえば、IT 管理者によって Windows Azure にアップロードされていた証明書を参照するサービス パッケージを、開発者がアップロードできます。IT 管理者は、この証明書を管理および更新する際に、サービスを停止したり新しいサービス パッケージをアップロードする必要はありません。これは、証明書の論理名、ストア名、および場所はサービス定義ファイルで指定され、証明書の拇印はサービス構成ファイルで指定されるためです。証明書を更新するには、新しい証明書をアップロードし、サービス構成ファイルの拇印値を変更するだけです。

注意

Windows Azure Tools for Microsoft Visual Studio を使用してサービスを開発している場合は、ロールのプロパティ ページで証明書と HTTPS エンドポイントを定義できます。詳細については、「クラウド サービスの構築」を参照してください。

 

以下のセクションでは、証明書をストアに追加し、証明書をサービスに関連付け、証明書を更新するワークフローについて説明します。これらのシナリオでは、IT 管理者とサービス開発者には 2 人の人物が想定されていますが、同じ人物が担当してもかまいません。

証明書ストアに新しい証明書を追加する

  1. IT 管理者は、証明書を .pfx ファイルにエクスポートします。証明書をエクスポートするには、次の方法があります。

    • Windows certmgr.msc ユーティリティを使用します。certmgr ユーティリティは、証明書ファイルを秘密キー付きの .pfx ファイルにエクスポートします。
    • コードまたは PowerShell から .NET API を使用して、証明書ファイルを秘密キー付き/なしの .pfx ファイルにエクスポートします。以下に、証明書ファイルをエクスポートするための PowerShell スクリプトの例を示します。
$c = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("c:\mycert.cer")
$bytes = $c.Export("Pfx","password")
[System.IO.File]::WriteAllBytes("c:\mycert.pfx", $bytes)
  1. IT 管理者は、Windows Azure ポータルまたは Windows Azure Service Management API のいずれかを使用して、この .pfx ファイルを Windows Azure にアップロードします。これで、アップロードされた証明書をサービスで使用したり、サブスクリプションの証明書ストアに格納できるようになります。

    次の図に、新しい証明書をサブスクリプションの証明書ストアに追加するプロセスを示します。

    WA_AddCert

    証明書が証明書チェーンに含まれている場合は、ベスト プラクティスとして、チェーン内のすべての証明書を Windows Azure にアップロードすることをお勧めします。

    注意

    Windows Azure Tools for Microsoft Visual Studio を使用してサービスに証明書参照を追加する場合は、チェーン内の証明書の一覧がサービス定義ファイルに自動的に追加されます。この場合も、証明書を Windows Azure にアップロードする必要があります。

     

    自己署名証明書を生成すると開発に役立つ場合があります。自己署名証明書を作成する方法については、「IIS 7 で SSL を設定する方法」を参照してください。

証明書をサービスに関連付ける

  1. IT 管理者は、証明書の拇印と拇印アルゴリズムをサービス開発者に提供します。拇印は証明書を識別しますが、機密情報ではありません。拇印アルゴリズムは、拇印の生成に使用されるアルゴリズムを指定します。

  2. サービス開発者が、サービス定義ファイル内の特定のロールに証明書を関連付けます。サービス定義ファイルの証明書エントリで、証明書の名前を提供します。この名前を使用して、サービス構成ファイルで指定される証明書の拇印に証明書を関連付けることができます。証明書が SSL で使用される場合は、この証明書名を HTTPS エンドポイントと関連付けることもできます。この名前は、サービス開発者が自由に設定できます。

    サービス定義ファイルのエントリでは、この証明書がコピーされる Windows Azure VM の保存場所およびストア名も指定します。保存場所は、Current User または Local Machine のいずれかを指定できます。ストア名は、組み込みのストア名、またはサービス開発者が提供するカスタム ストア名にすることができます。組み込みのストア名には、MyRootCATrustDisallowedTrustedPeopleTrustedPublisherAuthRoot、および AddressBook があります。ストア名がカスタム名である場合は、指定された名前で、Windows Azure により新しいストアが作成されます。サービス定義に証明書を追加する方法については、「サービス定義スキーマ」の「Certificate 要素」を参照してください。

    次のサンプル サービス定義ファイルでは、3 つの証明書、その保存場所、および証明書の名前の一覧が示されています。SSL という名前の証明書は、HTTPS エンドポイントの定義でも名前で参照されます。

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="CloudService1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="WCFServiceWebRole2">
    <InputEndpoints>
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
      <InputEndpoint name="Https" protocol="https" port="443" certificate="SSL" />
    </InputEndpoints>
    <ConfigurationSettings>
      <Setting name="DiagnosticsConnectionString" />
    </ConfigurationSettings>
    <Certificates>
      <Certificate name="SSL" storeLocation="LocalMachine" storeName="My" />
      <Certificate name="MSSecAuth" storeLocation="LocalMachine" storeName="CA" />
      <Certificate name="MSInternetAuth" storeLocation="LocalMachine" storeName="CA" />
    </Certificates>
    <LocalResources>
      <LocalStorage name="Logs" cleanOnRoleRecycle="false" sizeInMB="100"/>
    </LocalResources>
  </WebRole>
</ServiceDefinition>
  1. サービス開発者は、サービス定義ファイルで提供されたものと同じ名前を使用して、証明書のエントリをサービス構成ファイルに追加します。このエントリにより、証明書の拇印と拇印アルゴリズムも指定されます。Windows Azure は、拇印を使用して、サブスクリプションの証明書ストア内の証明書を特定し、ロールのインスタンスを実行する VM にその証明書を展開します。サービス構成ファイル内で証明書を指定する方法については、「サービス構成スキーマ」の「Certificate 要素」を参照してください。

  2. サービス開発者は、Windows Azure にサービス パッケージとサービス構成ファイルをアップロードして、サービスを展開します。

    次の図に、Windows Azure に展開されるサービスに証明書を関連付けるプロセスを示します。

    AssociateCertWithService

証明書ストア内の証明書を更新する

  1. 証明書を更新するために、IT 管理者は、「証明書ストアに新しい証明書を追加する」で説明したように、新しい証明書を .pfx ファイルにエクスポートします。

  2. IT 管理者またはサービス開発者のいずれかがサービス構成ファイルの証明書の拇印を更新します。ロールをリサイクルしなくても、サービス構成ファイルは更新できます。または、構成の変更が適用されるたびにロールをリサイクルするように構成することもできます。詳細については、「構成の変更の処理」を参照してください。

参照

概念

サービス証明書の管理

Windows Azure での HTTPS エンドポイントの構成

ページのトップへ