カスタム ドメインと SSL の使用

App Engine allows applications to be served via a custom domain, such as example.com, instead of an appspot.com address. SSL あり、なしのどちらでも、カスタム ドメインを使用できます。

App Engine アプリケーションでの SSL サポートは基本の SSL より高度なもので、世界中に分散した SSL エンドポイントを使用し、負荷分散機能が組み込まれているため、アプリを世界中のユーザーに安全、確実、迅速に提供できます。

このページでは、App Engine アプリでカスタム ドメインを使用する方法、また、オプションで、カスタム ドメインに SSL を設定する方法を説明します。

仮想 IP(VIP)は、2016 年 5 月 31 日でサポートを終了しています。Google は、利用規約に従って、現在 App Engine 本番環境で VIP サービスを利用するアプリケーションをサポートしていますが、VIP の新規購入はできず、将来的にはすべての VIP が Server Name Indication(SNI)プロトコルに移行されます。詳しくは、仮想 IP(VIP)から Server Name Indication(SNI)への移行をご覧ください。

はじめに

  • 使用するドメインをまだ所有していなければ、新しいドメインを購入します。ドメイン名は Google Domains などのドメイン名登録事業者から取得できます。
  • App Engine プロジェクトを作成し、デプロイします。クイックスタートからプロジェクトを使用する場合、プロジェクトは削除せず、そのまま保持してください。

アプリケーションにカスタム ドメインを追加する

App Engine アプリケーションにカスタム ドメインを追加するには、次の手順を行います。

  1. Google Cloud Platform Console で、カスタム ドメイン ページに移動します。

    カスタム ドメイン ページに移動

  2. [カスタム ドメインを追加] をクリックし、[新しいカスタム ドメインの追加] フォームを表示します。

    カスタム ドメインを追加

  3. [新しいカスタム ドメインの追加] フォームで、使用するカスタム ドメインを所有していることを確認します。

    1. ドメイン名(「example.com」)を入力し、[確認] をクリックします。これにより、新しい [Webmaster Central] タブが開きます。
    2. [Webmaster Central] タブの指示に従って操作し、その後 [確認] をクリックします。
    3. Cloud Platform Console の [新しいカスタム ドメインの追加] フォームに戻ります。
    4. ドメインがまだ確認されていない場合、[ドメインを更新] をクリックします。
  4. [新しいカスタム ドメインの追加] フォームの次のステップに進み、App Engine アプリを指定するカスタム ドメインを選択します。

    1. マッピングするドメインとサブドメインを指定します。

      • example.com などのネイキッド ドメインは、http://example.com にマッピングされます。
      • www などのサブドメインは、http://www.example.com にマッピングされます。
    2. [マッピングを送信] をクリックして目的のマッピングを作成します。

  5. [新しいカスタム ドメインの追加] フォームの最後のステップでは、タイプと正規名とともにリストされているリソース レコードに注意します。

    次の例では、CNAME はリストされているタイプの 1 つであり、ghs.googlehosted.com はその正規名です。

    カスタム ドメインを追加

  6. カスタム ドメインの DNS 設定にリストされたリソース レコードを追加します。

    1. ドメイン登録事業者のアカウントにログインし、DNS 設定ページを開きます。
    2. ホストレコード セクションで、[新しいカスタム ドメインの追加] フォームにリストされた各レコードを追加します。通常は、ホスト名と、アドレスとなる正規名を追加していきます。この例では、追加するレコードの 1 つにホスト名 www とアドレス ghs.googlehosted.com があります。独自ドメインを使用する場合、ホスト名として @ を使用し、[新しいカスタム ドメインの追加] フォームからこれに対応する値を選択します。
    3. ドメイン アカウントの変更を保存します。変更が反映されるまでしばらく時間がかかることがあります。
  7. 新しいカスタム ドメインの URL www.example.com からアプリを閲覧して、成功するかどうかテストします。

サブドメインを使用する

カスタム ドメインにワイルドカード サブドメイン マッピングを設定すると、アプリケーションは、一致するサブドメインに対するリクエストを処理します。

  • アプリケーションのバージョン名またはサービス名と一致するドメインが表示された場合、アプリケーションではそのバージョンが提供されます。
  • サービス名と一致するドメインが表示された場合、アプリケーションではそのサービスが提供されます。

ワイルドカード マッピング

App Engine のサービスではワイルドカード マッピングを使用できます。

ワイルドカードを使用すると、第 3 レベル以降であればどのレベルのサブドメインでもマッピングできます。たとえば、使用するドメインが example.com の場合、ウェブアドレス フィールドにテキストを入力すると次のような結果になります。

  • *」と入力すると、example.com のすべてのサブドメインがアプリにマッピングされます。
  • *.private」と入力すると、private.example.com のすべてのサブドメインがアプリにマッピングされます。
  • *.nichol.sharks.nhl」と入力すると、nichol.sharks.nhl.example.com のすべてのサブドメインがアプリにマッピングされます。
  • *.excogitate.system」と入力すると、excogitate.system.example.com のすべてのサブドメインがアプリにマッピングされます。

使用しているドメインの他のサブドメイン(sitesmail など)で Google Apps を使用する場合は、これらのマッピングの優先順位が高くなり、ワイルドカード マッピングより先に照合が行われます。また、他の App Engine アプリを他のサブドメインにマッピングしている場合にも、これらのマッピングはワイルドカード マッピングよりも優先順位が高くなります。

なお、DNS プロバイダによってはワイルドカード サブドメイン マッピングに対応していないことがあります。特に、CNAME ホストエントリでのワイルドカードの使用が許可されているかどうかに注意が必要です。

上記のワイルドカード ルーティング ルールは、App Engine のサービス ルーティング ルールに従って、サービス、バージョン、インスタンスのコンポーネントを含む URL にも適用されます。

カスタム ドメインで Strict-Transport-Security ヘッダーを使用する

ドメインがホワイトリスト登録済みの場合を除き、Strict-Transport-Security ヘッダーを使用することはできません。ドメインをホワイトリストに登録する場合、appengine-security-headers@google.com にお問い合わせください。

SSL をカスタム ドメインに追加する

App Engine アプリケーションで使用されているカスタム ドメインに対して SSL を有効にするには、次の手順を行います。

  1. App Engine プロジェクトですでにカスタム ドメインを設定していることを確認します。

  2. 任意の認証局からドメインの証明書を取得します。正確な手順は認証局によって異なる場合があります。詳しくは、証明書の取得をご覧ください。

  3. Cloud Platform Console で適切な権限があることを確認します。SSL 証明書をアップロードするには、対象となるすべてのドメインまたはその親ドメインの所有権の確認(ステップ 3)が必要です。次に例を示します。

    • www.example.com を対象とする証明書の場合、www.example.com または example.com のいずれかの所有権を確認します。
    • www.example.comsub.example.com を対象とする証明書の場合、www.example.comsub.example.com の両方の所有権、または example.com の所有権を確認します。
    • *.example.com を対象とする証明書の場合、example.com の所有権を確認する必要があります。
  4. ドメインで使用する SSL 証明書を、[SSL 証明書] ページでアップロードします。
    [SSL 証明書] ページに移動

    1. [新しい証明書をアップロード] をクリックします。

      証明書のアップロード

    2. プロンプトに従って、公開鍵証明書と暗号化されていない秘密鍵をアップロードします(これらがどういうものであるか、どのように取得するかについての詳細については、証明書の取得の最後のステップをご覧ください)。

    3. [アップロード] をクリックします。SSL 証明書をアップロードすると、Google Cloud Platform Console のすべてのプロジェクトで表示と使用ができるようになります。プロジェクトごとに同じ証明書をアップロードする必要はありません。

  5. 設定する証明書をリストから選択し、SSL を有効にするドメインを選択し、[保存] をクリックします。

  6. ブラウザで https を使用してカスタム ドメイン(https://www.example.com など)にアクセスし、変更をテストします。

提供中の証明書から新しい証明書へマッピングを転送する

証明書の有効期限が近づいたら、新しい証明書をアップロードし、古い証明書の既存のマッピングを新しい証明書に転送する必要があります。次に説明する手順は、既存の証明書がまだ有効で、現在カスタム ドメインに提供されていることを想定しています。

現在提供中の証明書からマッピングを転送する場合:

  1. 任意の認証局からドメインの証明書を取得します。正確な手順は認証局によって異なる場合があります。詳しくは、証明書の取得をご覧ください。

  2. [SSL 証明書] ページで SSL 証明書をアップロードします。
    [SSL 証明書] ページに移動

    1. [新しい証明書をアップロード] をクリックします。

      証明書のアップロード

    2. プロンプトに従って、公開鍵証明書と暗号化されていない秘密鍵をアップロードします(これらがどういうものであるか、どのように取得するかについての詳細については、証明書の取得の最後のステップをご覧ください)。

    3. [アップロード] をクリックします。

  3. 追加した新しい証明書を証明書リストから選択し、古い証明書によって提供されているドメインを選択します。

  4. [保存] をクリックして、古い証明書から新しい証明書へマッピングを転送します。

証明書の取得

SSL 証明書を取得するためのプロセスは、使用する認証局によって異なります。ここに記載された手順は、多少調整が必要となる場合があります。通常、各認証局から、プロセスの指示が提供されます。

App Engine アプリで使用する証明書を取得するには:

  1. 証明書署名リクエスト(CSR)を生成します。

    1. openssl ツールを起動します。

      openssl req -nodes -newkey rsa:2048 -keyout myserver.key -out server.csr
      
    2. プロンプトが表示されたら、以下を指定します。

      • 2 文字の国コード(例: 米国の場合は US)
      • 市区町村
      • 会社名(会社がない場合は自分の名前)
      • 組織部門。ない場合は「NA」
      • ドメイン名(www.example.com など)
      • メールアドレス

    他の値(オプション)の指定は必須ではありません。この結果生成される CSR ファイルは server.csr で、この後すぐに使用します。

  2. 使用する認証局(CA)を見つけます。たとえば、Let's EncryptSSLMateThawteComodo などの認証局があります。その後、証明書を購入します。

  3. CA から CSR ファイルの内容を要求されるため、CA の指示に従って、server.csr の内容をコピーして貼り付けます。

  4. CA からドメイン所有者の承認が要求されるため、プロンプトに従ってこの操作を行います。メール承認方式を使用するのが最も簡単であると思われます。その場合、所定のメールアドレスをドメイン アカウントで設定することが必要となる場合があります。これにより、CA から承認リクエスト メールを受け取り、そのメールで示された手順に従うことができます。所定のアドレスの代表例は admin@example.com です。

  5. ドメイン所有者の承認を提出した後、CA から証明書が送信されます。通常は .zip ファイルで送信されるので、このファイルを解凍します。

  6. 上記で作成した秘密鍵(myserver.key)を、App Engine で想定されている、暗号化されていない形式に変換します。

    openssl rsa -in myserver.key -out myserver.key.pem
    
  7. 次のコマンドを使用して、CA から提供された .crt ファイルをすべて 1 つのファイルに結合します。

    cat www_example_com.crt ASecureServerCA.crt ATrustCA.crt ATrustExternal.crt > concat.crt
    

    Google Cloud Platform Console のプロジェクトの App Engine 設定内の SSL ページを使用して、秘密鍵と結合済み証明書をアップロードする際、[秘密鍵] のファイル選択画面で、pem ファイル myserver.key.pem に変換した秘密鍵ファイルを指定します。[PEM でエンコードされた X.509 公開鍵証明書] のファイル選択画面では、CA からのすべての証明書が格納された結合済みファイル concat.crt を指定します。

秘密鍵と証明書が一致していることを確認するために、次のコマンドを使用します。

openssl x509 -noout -modulus -in concat.crt | openssl md5
openssl rsa -noout -modulus -in myserver.key.pem | openssl md5

両方のコマンドが同じ出力を返すはずです。

証明書とその CA チェーンが有効であることを確認するには、openssl verify コマンドが便利です。

openssl verify -verbose -CAfile concat.crt  concat.crt

App Engine での SSL 証明書のサポート

App Engine は次の種類の証明書をサポートします。

  • 単一のドメイン / ホスト名
  • 自己署名
  • ワイルドカード
  • サブジェクト代替名(SAN)/ マルチドメイン

証明書と鍵について、次のことが必要です。

  • 秘密鍵と証明書は、PEM 形式にしてアップロードしてください。
  • 秘密鍵は暗号化しないでください。
  • 証明書ファイルに格納できる証明書の数は最大で 5 つです。この数にはチェーン証明書と中間証明書が含まれます。
  • ホスト証明書のすべてのサブジェクト名は、ユーザーの確認済みのドメインと一致するか、そのサブドメインである必要があります。
  • 秘密鍵では RSA 暗号化を使用する必要があります。
  • 鍵の最大許容モジュラス: 2,048 ビット

ホスト証明書が中間証明書またはチェーン証明書(多くの認証局が発行)を必要とする場合、公開証明書ファイルの最後に中間証明書またはチェーン証明書を追加する必要があります。

一部の App Engine 機能では特殊なサブドメインを使用します。たとえば、サブドメインを使用して、アプリケーション サービスに対応したり、アプリケーションの異なるバージョンに対応することができます。これらを SSL で使用するには、SAN またはワイルドカード証明書を設定するのが適切です。ワイルドカード証明書は、サブドメインの 1 つのレベルのみをサポートします。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Python の App Engine スタンダード環境