SSL / TLS 証明書の管理

このページでは、クライアントとサーバーの CA 証明書を管理する方法について説明します。

クライアント証明書の管理

Cloud SQL でクライアント証明書を管理するには、次の手順を実施します。

クライアント証明書を取得する

クライアント証明書のうち、公開鍵の部分は取得できます。ただし、秘密鍵は取得できません。秘密鍵を紛失した場合は、新たに秘密鍵を作成する必要があります。

Console

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [接続] を選択します。
  4. [セキュリティ] タブを選択します。
  5. [クライアント証明書の管理] で、証明書の名前をクリックします。
  6. [SSL クライアント証明書] ページが開き、クライアント証明書(client-cert.pem)と証明書をダウンロードするためのリンクが表示されます。

gcloud

ssl client-certs describe コマンドを使用して、クライアント証明書の公開鍵を取得します。

gcloud sql ssl client-certs describe CERT_NAME \
--instance=INSTANCE_NAME \
--format="value(cert)" > client-cert.pem

REST v1

  1. 目的の証明書のフィンガープリントを取得するため、インスタンス上にある証明書のリストを表示します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

    取得する証明書の sha1Fingerprint フィールドを記録します。引用符は含めないでください。

  2. 証明書を取得します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • sha1FingerPrint: 証明書の sha1FingerPrint

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  3. 引用符で囲まれたすべての証明書データをファイルにコピーします。たとえば、client-cert.pem のようになります。引用符そのものはコピーしないでください。

REST v1beta4

  1. 目的の証明書のフィンガープリントを取得するため、インスタンス上にある証明書のリストを表示します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

    取得する証明書の sha1Fingerprint フィールドを記録します。引用符は含めないでください。

  2. 証明書を取得します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • sha1FingerPrint: 証明書の sha1FingerPrint

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  3. 引用符で囲まれたすべての証明書データをファイルにコピーします。たとえば、client-cert.pem のようになります。引用符そのものはコピーしないでください。

クライアント証明書を削除する

クライアント証明書を削除するとデータベース サーバーが更新され、再起動の必要がなくなります。

コンソール

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [接続] を選択します。
  4. [セキュリティ] タブを選択します。
  5. [クライアント証明書の管理] で、削除する証明書を選択して 削除。 をクリックします。
  6. [クライアント証明書の削除] ペインで、[OK] をクリックします。

gcloud

ssl client-certs delete コマンドを使用してクライアント証明書を削除します。

gcloud sql ssl client-certs delete CERT_NAME \
--instance=INSTANCE_NAME

REST v1

  1. 削除する証明書のフィンガープリントを取得するため、インスタンス上にある証明書のリストを表示します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

    削除する証明書の sha1Fingerprint フィールドを記録します。引用符は含めないでください。

  2. 証明書を削除します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • sha1FingerPrint: 証明書の sha1FingerPrint

    HTTP メソッドと URL:

    DELETE https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

REST v1beta4

  1. 削除する証明書のフィンガープリントを取得するため、インスタンス上にある証明書のリストを表示します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

    削除する証明書の sha1Fingerprint フィールドを記録します。引用符は含めないでください。

  2. 証明書を削除します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • sha1FingerPrint: 証明書の sha1FingerPrint

    HTTP メソッドと URL:

    DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

サーバー CA 証明書を管理する(インスタンスごとの CA)

このセクションでは、Cloud SQL によって内部的に作成されるサーバー CA 証明書を管理する方法について説明します。これは、Cloud SQL のデフォルトのサーバー CA モードです。この認証局階層では、Cloud SQL によってサーバー CA がインスタンスごとに作成されます。

サーバー CA 証明書をローテーションする

証明書の期限切れに関する通知を受け取った場合や、ローテーションを開始したい場合は、次の手順でローテーションを実施します。ローテーションを開始する前に、インスタンスに新しいサーバー CA を用意しておく必要があります。新しいサーバー CA がすでに作成されている場合、次の手順の最初のステップはスキップできます。

  1. 新しいサーバー CA を作成します。
  2. 新しいサーバー CA 証明書情報をダウンロードします。
  3. 新しいサーバー CA 証明書情報を使用するようにクライアントを更新します。
  4. ローテーションを完了します。これにより、アクティブな証明書が「前の」スロットに移動し、新しく追加された証明書がアクティブな証明書に更新されます。

Console

PEM ファイルとしてエンコードされた新しいサーバー CA 証明書をローカル環境にダウンロードします。

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [接続] を選択します。
  4. [セキュリティ] タブを選択します。
  5. [証明書を管理] をクリックして展開します。
  6. [CA 証明書をローテーション] を選択します。

    有効な証明書がない場合、ローテーション オプションは使用できません。新しいサーバー CA 証明書を作成する必要があります。

  7. [DOWNLOAD CERTIFICATES] をクリックします。

ダウンロードしたファイルをクライアント ホストマシンにコピーし、既存の server-ca.pem ファイルを置き換えて、すべての PostgreSQL クライアントを更新し、新しい情報を使用します。

クライアントの更新後、ローテーションを完了します。

  1. [セキュリティ] タブに戻ります。
  2. [証明書を管理] をクリックして展開します。
  3. [CA 証明書をローテーション] を選択します。
  4. クライアントが正しく接続していることを確認します。
  5. 新しくローテーションされた証明書を使用して接続しているクライアントが存在しない場合は、[CA 証明書をロールバック] を選択して前の構成にロールバックできます。

gcloud

  1. サーバー CA 証明書を作成します。
    gcloud sql ssl server-ca-certs create \
    --instance=INSTANCE
  2. ローカル PEM ファイルに証明書情報をダウンロードします。
    gcloud sql ssl server-ca-certs list \
    --format="value(cert)" \
    --instance=INSTANCE_NAME > \
    FILE_PATH/FILE_NAME.pem
  3. ダウンロードしたファイルをクライアント ホストマシンにコピーし、既存の server-ca.pem ファイルを置き換えて、すべてのクライアントを更新し、新しい情報を使用します。
  4. クライアントの更新後、ローテーションを完了します。
    gcloud sql ssl server-ca-certs rotate \
    --instance=INSTANCE_NAME
          
  5. クライアントが正しく接続していることを確認します。
  6. 新しくローテーションされた証明書を使用して接続していないクライアントがある場合は、以前の構成にロールバックできます。

REST v1

  1. サーバー CA 証明書をダウンロードします。

    データをリクエストする前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/listServerCas

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  2. ローテーションを完了します。

    データをリクエストする前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

REST v1beta4

  1. サーバー CA 証明書をダウンロードします。

    データをリクエストする前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/listServerCas

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  2. ローテーションを完了します。

    データをリクエストする前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

No upcoming/previous Server CA Certificate exists という証明書をローテーションしようとしたときにエラーが発生した場合は、インスタンスごとの CA 階層を使用するインスタンスでコマンドを実行していることを確認します。Cloud SQL インスタンスに構成されている CA 階層を確認するには、gcloud sql instances describe コマンドを使用します。詳細については、インスタンス情報を表示するをご覧ください。

証明書のローテーション オペレーションをロールバックする

証明書のローテーションを完了したら、クライアントはすべて新しい証明書を使用して Cloud SQL インスタンスに接続する必要があります。クライアントが新しい証明書情報を使用するように正しく更新されていない場合は、SSL/TLS を使用してインスタンスに接続できません。この場合、前の証明書構成にロールバックできます。

ロールバック オペレーションにより、アクティブな証明書が「今後の」スロットに移動されます(「今後の」証明書が置き換えられます)。「前の」証明書がアクティブな証明書になり、証明書構成がローテーションの完了前の状態に戻ります。

以前の証明書構成にロールバックするには:

Console

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [接続] を選択します。
  4. [セキュリティ] タブを選択します。
  5. [証明書を管理] をクリックして展開します。
  6. [CA 証明書をロールバック] を選択します。

    有効な証明書がない場合、ロールバック オプションは使用できません。それ以外の場合、ロールバック アクションは数秒後に完了します。

gcloud

gcloud sql ssl server-ca-certs rollback \
--instance=INSTANCE_NAME
   

REST v1

  1. サーバー CA 証明書をダウンロードします。

    データをリクエストする前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/listServerCas

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  2. ロールバック先のバージョンの sha1Fingerprint フィールドをコピーします。

    activeVersion として表示される sha1Fingerprint 値の直前の createTime 値を使用したバージョンを探します。

  3. ローテーションをロールバックします。

    データをリクエストする前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa

    リクエストの本文(JSON):

    {
      "rotateServerCaContext": {"nextVersion": "sha1Fingerprint"}
    }
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

REST v1beta4

  1. サーバー CA 証明書をダウンロードします。

    データをリクエストする前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/listServerCas

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  2. ロールバック先のバージョンの sha1Fingerprint フィールドをコピーします。

    activeVersion として表示される sha1Fingerprint 値の直前の createTime 値を使用したバージョンを探します。

  3. ローテーションをロールバックします。

    データをリクエストする前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa

    リクエストの本文(JSON):

    {
      "rotateServerCaContext": {"nextVersion": "sha1Fingerprint"}
    }
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

証明書 CA のローテーションをロールバックしようとしたときに No upcoming/previous Server CA Certificate exists というエラーが発生した場合は、インスタンスごとの CA 階層を使用するインスタンスでコマンドを実行していることを確認します。Cloud SQL インスタンスに構成されている CA 階層を確認するには、gcloud sql instances describe コマンドを使用します。詳細については、インスタンス情報を表示するをご覧ください。

ローテーションを開始する

ローテーションを開始するにあたって、Cloud SQL からのメールを待つ必要はありません。いつでも開始できます。ローテーションを開始すると、新しい証明書が作成され、「今後の」スロットに配置されます。リクエスト時に「今後の」スロットに証明書がすでに存在する場合、その証明書は削除されます。存在できる「今後の」証明書は 1 つだけです。

ローテーションを開始するには:

Console

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [接続] を選択します。
  4. [セキュリティ] タブを選択します。
  5. [MANAGE CERTIFICATES] をクリックして展開します。
  6. [新しい CA 証明書を作成] をクリックします。
  7. [CA 証明書をローテーション] を選択します。

    有効な証明書がない場合、ローテーション オプションは使用できません。

  8. サーバー CA 証明書をローテーションするの説明に沿ってローテーションを完了します。

gcloud

  1. ローテーションを開始します。
    gcloud sql ssl server-ca-certs create \
    --instance=INSTANCE_NAME
         
  2. サーバー CA 証明書をローテーションするの説明に沿ってローテーションを完了します。

REST v1

  1. リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  2. サーバー CA 証明書をローテーションするの説明に沿ってローテーションを完了します。

REST v1beta4

  1. リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  2. サーバー CA 証明書をローテーションするの説明に沿ってローテーションを完了します。

サーバー CA 証明書に関する情報を取得する

サーバー CA 証明書について、その有効期限や暗号化レベルなどの情報を取得できます。

コンソール

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [接続] を選択します。
  4. [セキュリティ] タブを選択します。

    [サーバー CA 証明書の管理] で、サーバー CA 証明書の有効期限を表で確認できます。

    証明書のタイプを確認するには、gcloud sql ssl server-ca-certs list --instance=INSTANCE_NAME コマンドを使用します。

gcloud

gcloud sql ssl server-ca-certs list \
--instance=INSTANCE_NAME

REST v1

インスタンスの説明を取得すると、サーバー CA 証明書についての詳細を見ることができます。

リクエストのデータを使用する前に、次のように置き換えます。

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID

HTTP メソッドと URL:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=serverCaCert

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

REST v1beta4

インスタンスの説明を取得すると、サーバー CA 証明書についての詳細を見ることができます。

リクエストのデータを使用する前に、次のように置き換えます。

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID

HTTP メソッドと URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=serverCaCert

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

CA 証明書の内容を表示する

openssl storeutl を使用すると、CA 証明書の内容を表示できます。

sql ssl server-ca-certs list コマンドを実行すると、以前のローテーション関連のオペレーションから複数の CA 証明書が取得される場合があります。

gcloud

  1. 次のコマンドを実行します。
    gcloud sql ssl server-ca-certs list \
      --instance=INSTANCE_NAME \
      --format='value(cert)' > temp_cert.pem

    INSTANCE_NAME は、インスタンス名で置き換えます。

  2. openssl を使用して、CA 証明書の内容を確認します。
  3. openssl storeutl -noout -text temp_cert.pem
       

サーバー証明書の内容を表示する

openssl s_client を使用すると、サーバー証明書の内容を表示できます。

gcloud

サーバー証明書の内容を表示するには、次のコマンドを実行します。

openssl s_client -starttls postgres -connect INSTANCE_IP_ADDRESS:5432

INSTANCE_IP_ADDRESS は、インスタンスの IP アドレスに置き換えます。

サーバー証明書を管理する(共有 CA とカスタマー マネージド CA)

このセクションでは、共有 CA またはカスタマー マネージド CA を使用するインスタンスでサーバー証明書を管理する方法について説明します。

インスタンスのサーバー CA モードとして共有 CA を使用するようにオプトインするには、インスタンスを作成するときに、serverCaMode 設定(Cloud SQL Admin API)または --server-ca-mode フラグ(gcloud CLI)に GOOGLE_MANAGED_CAS_CA を指定します。

インスタンスのサーバー CA モードとしてカスタマー マネージド CA を使用するには、インスタンスを作成するときに、serverCaMode 設定(Cloud SQL Admin API)または --server-ca-mode フラグ(gcloud CLI)に CUSTOMER_MANAGED_CAS_CA を指定し、有効な CA プールと CA が必要です。詳細については、顧客管理 CA を使用するをご覧ください。

サーバー証明書のローテーションを行う

サーバー証明書の期限切れに関する通知を受け取った場合や、ローテーションを開始したい場合は、次の手順でローテーションを実施します。ローテーションを開始する前に、今後のローテーション用に新しいサーバー証明書を作成しておく必要があります。今後のローテーション用に新しいサーバー証明書がすでに作成されている場合、次の手順の最初のステップはスキップできます。

インスタンスでサーバー証明書をローテーションするには、次の操作を行います。

  1. 新しいサーバー証明書が必要な場合は、作成します。

  2. ルート CA がクライアントによってすでに信頼されている場合、このステップは省略可能です。ただし、サーバー CA 情報を使用してクライアントを更新する必要がある場合は、次の操作を行います。

    1. 最新のサーバー CA 情報をダウンロードします。
    2. 最新のサーバー CA 情報を使用するようにクライアントを更新します。
  3. アクティブな証明書を前のスロットに移動し、新しい証明書をアクティブな証明書に更新することで、ローテーションを完了します。

コンソール

プレビュー版では、Google Cloud コンソールを使用して、CA Service を使用するインスタンスでサーバー証明書をローテーションすることはできません。代わりに、gcloud beta sql ssl server-certs rotate コマンドまたは Cloud SQL Admin API コマンドを使用します。

gcloud

  1. サーバー証明書を作成するには、次のコマンドを使用します。
    gcloud beta sql ssl server-certs create \
    --instance=INSTANCE
  2. INSTANCE は、インスタンス名で置き換えます。
  3. 最新の CA バンドルを使用していることを確認します。最新の CA バンドルを使用していない場合は、次のコマンドを実行して、インスタンスの最新のサーバー CA 情報をローカル PEM ファイルにダウンロードします。
    gcloud beta sql ssl server-certs list \
    --format="value(ca_cert.cert)" \
    --instance=INSTANCE_NAME > \
    FILE_PATH/server-ca.pem

    または、このページのルートおよびリージョン CA 証明書バンドルの表から CA バンドルをダウンロードします。

    その後、ダウンロードしたファイルをクライアント ホストマシンにコピーし、既存の server-ca.pem ファイルを置き換えて、新しいサーバー CA 情報を使用するようにすべてのクライアントを更新します。

  4. すべてのクライアントを更新したら(クライアントの更新が必要な場合)、ローテーションを完了します。
    gcloud beta sql ssl server-certs rotate \
    --instance=INSTANCE_NAME
          
  5. クライアントが正しく接続していることを確認します。

    新しくローテーションが行われたサーバー証明書を使用して接続していないクライアントがある場合は、以前の設定にロールバックします。

REST v1

  1. サーバー証明書を作成します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: プロジェクト ID
    • INSTANCE_ID: インスタンス ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/addServerCertificate

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  2. サーバー CA 証明書情報をダウンロードする必要がある場合は、次のコマンドを使用できます。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: プロジェクト ID
    • INSTANCE_ID: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  3. ローテーションを完了します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: プロジェクト ID
    • INSTANCE_ID: インスタンス ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

REST v1beta4

  1. サーバー証明書を作成します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: プロジェクト ID
    • INSTANCE_ID: インスタンス ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/addServerCertificate

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  2. サーバー CA 証明書情報をダウンロードする必要がある場合は、次のコマンドを使用できます。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: プロジェクト ID
    • INSTANCE_ID: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  3. ローテーションを完了します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: プロジェクト ID
    • INSTANCE_ID: インスタンス ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

証明書のローテーションをロールバックする

サーバー証明書のローテーションが完了したら、すべてのクライアントが新しい証明書を使用して Cloud SQL インスタンスに接続する必要があります。クライアントが新しい証明書情報を使用するように正しく更新されていない場合は、SSL/TLS を使用してインスタンスに接続できません。この場合、前の証明書構成にロールバックできます。

ロールバック オペレーションにより、アクティブな証明書が「今後の」スロットに移動されます。これにより「今後の」証明書が置き換えられます。「前の」証明書がアクティブな証明書になり、証明書設定は、ローテーションが完了する前の以前の状態に戻ります。

コンソール

プレビュー版では、Google Cloud コンソールを使用して、CA Service を使用するインスタンスでサーバー証明書をロールバックできません。代わりに、gcloud beta sql ssl server-certs rollback コマンドまたは Cloud SQL Admin API コマンドを使用します。

gcloud

gcloud beta sql ssl server-certs rollback \
--instance=INSTANCE_NAME
   

REST v1

  1. サーバー証明書を一覧表示します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: プロジェクト ID
    • INSTANCE_ID: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  2. ロールバック先のバージョンの sha1Fingerprint フィールドをコピーします。

    activeVersion として表示される sha1Fingerprint 値の直前の createTime 値を使用したバージョンを探します。

  3. ローテーションをロールバックします。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: プロジェクト ID
    • INSTANCE_ID: インスタンス ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate

    リクエストの本文(JSON):

    {
      "rotateServerCertificateContext": {"nextVersion": "sha1Fingerprint"}
    }
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

REST v1beta4

  1. サーバー証明書を一覧表示します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: プロジェクト ID
    • INSTANCE_ID: インスタンス ID

    HTTP メソッドと URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  2. ロールバック先のバージョンの sha1Fingerprint フィールドをコピーします。

    activeVersion として表示される sha1Fingerprint 値の直前の createTime 値を使用したバージョンを探します。

  3. ローテーションをロールバックします。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: プロジェクト ID
    • INSTANCE_ID: インスタンス ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate

    リクエストの本文(JSON):

    {
      "rotateServerCertificateContext": {"nextVersion": "sha1Fingerprint"}
    }
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

CA 証明書の内容を表示する

openssl storeutl ユーティリティを使用して、CA 証明書の内容を表示できます。

beta sql ssl server-ca-certs list コマンドを実行すると、トラスト チェーンにより常に複数の CA 証明書が取得されます。以前のローテーション関連のオペレーションから複数の CA 証明書が取得される場合もあります。

gcloud

  1. 次のコマンドを実行します。
    gcloud beta sql ssl server-certs list \
      --instance=INSTANCE_NAME \
      --format='value(cert)' > temp_cert.pem

    INSTANCE_NAME は、インスタンス名で置き換えます。

  2. openssl を使用して、CA 証明書の内容を確認します。
  3. openssl storeutl -noout -text temp_cert.pem
       

サーバー証明書の内容を表示する

openssl ユーティリティと beta sql ssl server-certs list コマンドを使用して、サーバー証明書の内容を表示できます。

gcloud CLI コマンドを実行すると、トラスト チェーンにより常に複数の CA 証明書が取得されます。以前のローテーション関連のオペレーションから複数の CA 証明書が取得される場合もあります。

gcloud

openssl s_client のみを使用:

openssl s_client -starttls postgres -connect INSTANCE_IP_ADDRESS:5432

INSTANCE_IP_ADDRESS は、インスタンスの IP アドレスに置き換えます。

gcloud CLIopenssl storeutl を使用:

  1. 次のコマンドを実行します。
    gcloud sql ssl server-certs list \
      --instance=INSTANCE_NAME \
      --format='value(ssl_cert.cert)' > temp_cert.pem

    INSTANCE_NAME は、インスタンス名で置き換えます。

  2. openssl を使用して、サーバー証明書の内容を確認します。
  3. openssl storeutl -noout -text temp_cert.pem
       

共有 CA のルート CA 証明書バンドルとリージョン CA 証明書バンドルをダウンロードする

Google マネージド共有 CA 構成を使用している場合は、次の表からルート CA 証明書バンドルとリージョン CA 証明書バンドルをダウンロードできます。

これらの証明書バンドルは、インスタンスごとの CA オプションまたは顧客管理の CA オプションを使用するインスタンスには適用されません。

リージョン名 ロケーション 証明書バンドル
グローバル
すべてのリージョンの CA すべてのロケーション global.pem
アジア
asia-east1 台湾 asia-east1.pem
asia-east2 香港 asia-east2.pem
asia-northeast1 東京 asia-northeast1.pem
asia-northeast2 大阪 asia-northeast2.pem
asia-northeast3 ソウル asia-northeast3.pem
asia-south1 ムンバイ asia-south1.pem
asia-south2 デリー asia-south2.pem
asia-southeast1 シンガポール asia-southeast1.pem
asia-southeast2 ジャカルタ asia-southeast2.pem
アフリカ
africa-south1 ヨハネスブルグ africa-south1.pem
オーストラリア
australia-southeast1 シドニー australia-southeast1.pem
australia-southeast2 メルボルン australia-southeast2.pem
ヨーロッパ
europe-central2 ワルシャワ europe-central2.pem
europe-north1 フィンランド europe-north1.pem
europe-southwest1 マドリッド europe-southwest1.pem
europe-west1 ベルギー europe-west1.pem
europe-west2 ロンドン europe-west2.pem
europe-west3 フランクフルト europe-west3.pem
europe-west4 オランダ europe-west4.pem
europe-west6 チューリッヒ europe-west6.pem
europe-west8 ミラノ europe-west8.pem
europe-west9 パリ europe-west9.pem
europe-west10 ベルリン europe-west10.pem
europe-west12 トリノ europe-west12.pem
中東
me-central1 ドーハ me-central1.pem
me-central2 ダンマーム me-central2.pem
me-west1 テルアビブ me-west1.pem
北米
northamerica-northeast1 モントリオール northamerica-northeast1.pem
northamerica-northeast2 トロント northamerica-northeast2.pem
northamerica-south1 メキシコ northamerica-south1.pem
us-central1 アイオワ us-central1.pem
us-east1 サウスカロライナ us-east1.pem
us-east4 北バージニア us-east4.pem
us-east5 コロンバス us-east5.pem
us-south1 Dallas us-south1.pem
us-west1 Oregon us-west1.pem
us-west2 ロサンゼルス us-west2.pem
us-west3 ソルトレイクシティ us-west3.pem
us-west4 ラスベガス us-west4.pem
南アメリカ
southamerica-east1 サンパウロ southamerica-east1.pem
southamerica-west1 サンティアゴ southamerica-west1.pem

SSL / TLS 構成をリセットする

SSL / TLS 構成は完全にリセットできます。

Console

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [接続] を選択します。
  4. [SSL 設定をリセット] セクションに移動します。
  5. [SSL 設定をリセット] をクリックします。

gcloud

  1. 証明書を更新します。

    gcloud sql instances reset-ssl-config INSTANCE_NAME
  2. 新しいクライアント証明書を作成します

REST v1beta4

  1. 証明書を更新します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/resetSslConfig

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  2. 新しいクライアント証明書を作成します

次のステップ