SSL / TLS 証明書の管理

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

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

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

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

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

コンソール

  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 証明書をローテーションする

証明書の期限切れに関する通知を受け取った場合やローテーションを開始した場合は、ローテーションを完了するために次の手順を実施する必要があります。

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

コンソール

新しいサーバー CA 証明書情報をダウンロードします。

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

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

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

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

  7. [証明書をダウンロード] をクリックします。

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

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

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

  1. [セキュリティ] タブに戻ります。
  2. [証明書を管理] をクリックして展開します。
  3. [CA 証明書をローテーション] を選択します。
  4. クライアントが正しく接続していることを確認します。

    新しくローテーションされた証明書を使用して接続しているクライアントが存在しない場合は、[CA 証明書をロールバック] を選択して前の構成にロールバックできます。

gcloud

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

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

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 レスポンスが返されます。

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

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

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

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

コンソール

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

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

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

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

gcloud

gcloud beta 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 レスポンスが返されます。

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

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

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

コンソール

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

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

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

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

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

gcloud

  1. ローテーションを開始します。
    gcloud beta 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 beta sql ssl server-ca-certs list --instance=INSTANCE_NAME コマンドを使用します。

gcloud

gcloud beta 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 レスポンスが返されます。

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

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

コンソール

  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. gcloud sql instances restart INSTANCE_NAME
    
  3. 新しいクライアント証明書を作成します

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. 新しいクライアント証明書を作成します

次のステップ