SSL / TLS 証明書の管理
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
このページでは、サーバー CA 証明書を管理する方法について説明します。
暗号化された接続を使用する
詳しくは、SQL Server での暗号化された接続の使用方法 をご覧ください。
サーバー CA 証明書を管理する(インスタンスごとの CA)
このセクションでは、Cloud SQL によって内部的に作成されるサーバー CA 証明書を管理する方法について説明します。これは、Cloud SQL のデフォルトのサーバー CA モードです。この認証局階層では、Cloud SQL によってサーバー CA がインスタンスごとに作成されます。
サーバー CA 証明書をローテーションする
証明書の期限切れに関する通知を受け取った場合や、ローテーションを開始したい場合は、次の手順でローテーションを実施します。ローテーションを開始する前に、インスタンスに新しいサーバー CA を用意しておく必要があります。新しいサーバー CA がすでに作成されている場合、次の手順の最初のステップはスキップできます。
新しいサーバー CA を作成します。
新しいサーバー CA 証明書情報をダウンロードします。
新しいサーバー CA 証明書情報を使用するようにクライアントを更新します。
ローテーションを完了します。これにより、アクティブな証明書が「前の」スロットに移動し、新しく追加された証明書がアクティブな証明書に更新されます。
SSL 証明書をローテーションした後、App Engine と Cloud SQL Auth Proxy 接続は、接続時に新しい証明書を自動的に受信します。
コンソール
PEM ファイルとしてエンコードされた新しいサーバー CA 証明書をローカル環境にダウンロードします。
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
Cloud SQL の [インスタンス] に移動
インスタンスの [概要 ] ページを開くには、インスタンス名をクリックします。
SQL ナビゲーション メニューから [接続 ] を選択します。
[セキュリティ ] タブを選択します。
[証明書を管理 ] をクリックして展開します。
[CA 証明書をローテーション ] を選択します。有効な証明書がない場合、ローテーション オプションは使用できません。新しいサーバー CA 証明書 を作成する必要があります。
[証明書をダウンロード ] をクリックします。
ダウンロードしたファイルをクライアント ホストマシンにコピーして既存の server-ca.pem
ファイルを置き換えて、すべての SQL Server クライアントを更新し、新しい情報を使用します。
クライアントの更新後、ローテーションを完了します。
[セキュリティ ] タブに戻ります。
[証明書を管理 ] をクリックして展開します。
[CA 証明書をローテーション ] を選択します。
クライアントが正しく接続していることを確認します。
新しくローテーションされた証明書を使用して接続しているクライアントが存在しない場合は、[CA 証明書をロールバック ] を選択して前の構成にロールバック できます。
gcloud
サーバー CA 証明書を作成します。
gcloud sql ssl server-ca-certs create \
--instance=INSTANCE
ローカル PEM ファイルに証明書情報をダウンロードします。
gcloud sql ssl server-ca-certs list \
--format="value(cert)" \
--instance=INSTANCE_NAME > \
FILE_PATH /FILE_NAME .pem
ダウンロードしたファイルをクライアント ホストマシンにコピーし、既存の server-ca.pem ファイルを置き換えて、すべてのクライアントを更新し、新しい情報を使用します。
クライアントの更新後、ローテーションを完了します。
gcloud sql ssl server-ca-certs rotate \
--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 /listServerCas
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /listServerCas"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /listServerCas" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"certs": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number ",
"cert": "cert-value ",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint ",
"instance": "instance-id ",
"createTime": "2020-02-10T17:18:54.935Z",
"expirationTime": "2030-02-07T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
certSerialNumber": "cert-serial-number ",
"cert": "cert-value ",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint ",
"instance": "instance-id ",
"createTime": "2019-11-14T22:43:56.458Z",
"expirationTime": "2029-11-11T22:44:56.458Z"
}
],
"activeVersion": "active-version ",
"kind": "sql#instancesListServerCas"
}
ローテーションを完了します。
データをリクエストする前に、次のように置き換えます。
project-id : プロジェクト ID
instance-id : インスタンス ID
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /rotateServerCa
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /rotateServerCa"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /rotateServerCa" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id ",
"targetId": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id /operations/operation-id ",
"targetProject": "project-id "
}
REST v1beta4
サーバー CA 証明書をダウンロードします。
データをリクエストする前に、次のように置き換えます。
project-id : プロジェクト ID
instance-id : インスタンス ID
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /listServerCas
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /listServerCas"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /listServerCas" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"certs": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number ",
"cert": "cert-value ",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint ",
"instance": "instance-id ",
"createTime": "2020-02-10T17:18:54.935Z",
"expirationTime": "2030-02-07T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
certSerialNumber": "cert-serial-number ",
"cert": "cert-value ",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint ",
"instance": "instance-id ",
"createTime": "2019-11-14T22:43:56.458Z",
"expirationTime": "2029-11-11T22:44:56.458Z"
}
],
"activeVersion": "active-version ",
"kind": "sql#instancesListServerCas"
}
ローテーションを完了します。
データをリクエストする前に、次のように置き換えます。
project-id : プロジェクト ID
instance-id : インスタンス ID
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /rotateServerCa
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /rotateServerCa"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /rotateServerCa" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id ",
"targetId": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /operations/operation-id ",
"targetProject": "project-id "
}
証明書をローテーションしようとしたときに No upcoming/previous Server CA Certificate exists
というエラーが発生した場合は、インスタンスごとの CA 階層を使用するインスタンスでコマンドを実行していることを確認します。Cloud SQL インスタンスに構成されている CA 階層を確認するには、gcloud sql instances describe
コマンドを使用します。詳細については、インスタンス情報を表示する をご覧ください。
証明書のローテーション オペレーションをロールバックする
証明書のローテーションを完了したら、クライアントはすべて新しい証明書を使用して Cloud SQL インスタンスに接続する必要があります。クライアントが新しい証明書情報を使用するように正しく更新されていない場合は、SSL/TLS を使用してインスタンスに接続できません。この場合、前の証明書構成にロールバックできます。
ロールバック オペレーションにより、アクティブな証明書が「今後の」スロットに移動されます(「今後の」証明書が置き換えられます)。「前の」証明書がアクティブな証明書になり、証明書構成がローテーションの完了前の状態に戻ります。
注: 証明書のロールバックを利用できるのは、古い証明書の期限が切れるまでです。 以前の証明書構成にロールバックするには:
コンソール
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
Cloud SQL の [インスタンス] に移動
インスタンスの [概要 ] ページを開くには、インスタンス名をクリックします。
SQL ナビゲーション メニューから [接続 ] を選択します。
[セキュリティ ] タブを選択します。
[証明書を管理 ] をクリックして展開します。
[CA 証明書をロールバック ] を選択します。有効な証明書がない場合、ロールバック オプションは使用できません。それ以外の場合、ロールバック アクションは数秒後に完了します。
gcloud
gcloud sql ssl server-ca-certs rollback \
--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 /listServerCas
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /listServerCas"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /listServerCas" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"certs": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number ",
"cert": "cert-value ",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint ",
"instance": "instance-id ",
"createTime": "2020-02-10T17:18:54.935Z",
"expirationTime": "2030-02-07T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
certSerialNumber": "cert-serial-number ",
"cert": "cert-value ",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint ",
"instance": "instance-id ",
"createTime": "2019-11-14T22:43:56.458Z",
"expirationTime": "2029-11-11T22:44:56.458Z"
}
],
"activeVersion": "active-version ",
"kind": "sql#instancesListServerCas"
}
ロールバック先のバージョンの sha1Fingerprint
フィールドをコピーします。
activeVersion
として表示される sha1Fingerprint 値の直前の createTime 値を使用したバージョンを探します。
ローテーションをロールバックします。
データをリクエストする前に、次のように置き換えます。
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 "}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /rotateServerCa"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /rotateServerCa" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id ",
"targetId": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id /operations/operation-id ",
"targetProject": "project-id "
}
REST v1beta4
サーバー CA 証明書をダウンロードします。
データをリクエストする前に、次のように置き換えます。
project-id : プロジェクト ID
instance-id : インスタンス ID
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /listServerCas
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /listServerCas"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /listServerCas" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"certs": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number ",
"cert": "cert-value ",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint ",
"instance": "instance-id ",
"createTime": "2020-02-10T17:18:54.935Z",
"expirationTime": "2030-02-07T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
certSerialNumber": "cert-serial-number ",
"cert": "cert-value ",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint ",
"instance": "instance-id ",
"createTime": "2019-11-14T22:43:56.458Z",
"expirationTime": "2029-11-11T22:44:56.458Z"
}
],
"activeVersion": "active-version ",
"kind": "sql#instancesListServerCas"
}
ロールバック先のバージョンの sha1Fingerprint
フィールドをコピーします。
activeVersion
として表示される sha1Fingerprint 値の直前の createTime 値を使用したバージョンを探します。
ローテーションをロールバックします。
データをリクエストする前に、次のように置き換えます。
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 "}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /rotateServerCa"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /rotateServerCa" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id ",
"targetId": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /operations/operation-id ",
"targetProject": "project-id "
}
証明書 CA のローテーションをロールバックしようとしたときに No upcoming/previous Server CA Certificate exists
というエラーが発生した場合は、インスタンスごとの CA 階層を使用するインスタンスでコマンドを実行していることを確認します。Cloud SQL インスタンスに構成されている CA 階層を確認するには、gcloud sql instances describe
コマンドを使用します。詳細については、インスタンス情報を表示する をご覧ください。
ローテーションを開始する
ローテーションを開始するにあたって、Cloud SQL からのメールを待つ必要はありません。いつでも開始できます。ローテーションを開始すると、新しい証明書が作成され、「今後の」スロットに配置されます。リクエスト時に「今後の」スロットに証明書がすでに存在する場合、その証明書は削除されます。存在できる「今後の」証明書は 1 つだけです。
ローテーションを開始するには:
コンソール
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
Cloud SQL の [インスタンス] に移動
インスタンスの [概要 ] ページを開くには、インスタンス名をクリックします。
SQL ナビゲーション メニューから [接続 ] を選択します。
[セキュリティ ] タブを選択します。
[証明書を管理 ] をクリックして展開します。
[新しい CA 証明書を作成 ] をクリックします。
[CA 証明書をローテーション ] を選択します。有効な証明書がない場合、ローテーション オプションは使用できません。
サーバー CA 証明書をローテーションする の説明に沿ってローテーションを完了します。
gcloud
ローテーションを開始します。
gcloud sql ssl server-ca-certs create \
--instance=INSTANCE_NAME
サーバー CA 証明書をローテーションする の説明に沿ってローテーションを完了します。
REST v1
リクエストのデータを使用する前に、次のように置き換えます。
project-id : プロジェクト ID
instance-id : インスタンス ID
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /rotateServerCa
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /rotateServerCa"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /rotateServerCa" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id ",
"targetId": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id /operations/operation-id ",
"targetProject": "project-id "
}
サーバー CA 証明書をローテーションする の説明に沿ってローテーションを完了します。
REST v1beta4
リクエストのデータを使用する前に、次のように置き換えます。
project-id : プロジェクト ID
instance-id : インスタンス ID
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /rotateServerCa
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /rotateServerCa"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /rotateServerCa" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id ",
"targetId": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /operations/operation-id ",
"targetProject": "project-id "
}
サーバー CA 証明書をローテーションする の説明に沿ってローテーションを完了します。
サーバー CA 証明書に関する情報を取得する
サーバー CA 証明書について、その有効期限や暗号化レベルなどの情報を取得できます。
コンソール
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
Cloud SQL の [インスタンス] に移動
インスタンスの [概要 ] ページを開くには、インスタンス名をクリックします。
SQL ナビゲーション メニューから [接続 ] を選択します。
[セキュリティ ] タブを選択します。[サーバー 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
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id ?fields=serverCaCert"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id ?fields=serverCaCert" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"serverCaCert":
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number ",
"cert": "cert-value -",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint ",
"instance": "instance-id ",
"createTime": "2020-02-10T17:18:54.935Z",
"expirationTime": "2030-02-07T17:19:54.935Z"
}
}
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
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id ?fields=serverCaCert"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id ?fields=serverCaCert" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"serverCaCert":
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number ",
"cert": "cert-value -",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint ",
"instance": "instance-id ",
"createTime": "2020-02-10T17:18:54.935Z",
"expirationTime": "2030-02-07T17:19:54.935Z"
}
}
CA 証明書の内容を表示する
openssl storeutl
を使用すると、CA 証明書の内容を表示できます。
sql ssl server-ca-certs list コマンドを実行すると、以前のローテーション関連のオペレーションから複数の CA 証明書が取得される場合があります。
gcloud
次のコマンドを実行します。
gcloud sql ssl server-ca-certs list \
--instance= INSTANCE_NAME \
--format= 'value(cert)' > temp_cert.pem
INSTANCE_NAME は、インスタンス名で置き換えます。
openssl
を使用して、CA 証明書の内容を確認します。
openssl storeutl -noout -text temp_cert.pem
サーバー証明書の内容を表示する
nmap
を使用すると、サーバー証明書の内容を表示できます。
nmap
をダウンロードしてインストールするには、
https://nmap.org/ にアクセスします。
gcloud
サーバー証明書の内容を表示するには、次のコマンドを実行します。
nmap -sV -p 1433 --script ssl-cert INSTANCE_IP_ADDRESS -Pn
INSTANCE_IP_ADDRESS は、インスタンスの IP アドレスに置き換えます。
サーバー証明書を管理する(共有 CA と顧客管理の CA)
Preview
This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section
of the Service Specific Terms .
Pre-GA features are available "as is" and might have limited support.
For more information, see the
launch stage descriptions .
このセクションでは、共有 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 を使用する をご覧ください。
サーバー証明書のローテーションを行う
サーバー証明書の期限切れに関する通知を受け取った場合や、ローテーションを開始したい場合は、次の手順でローテーションを実施します。ローテーションを開始する前に、今後のローテーション用に新しいサーバー証明書を作成しておく必要があります。今後のローテーション用に新しいサーバー証明書がすでに作成されている場合、次の手順の最初のステップはスキップできます。
インスタンスでサーバー証明書をローテーションするには、次の操作を行います。
新しいサーバー証明書が必要な場合は、それを作成 します。
クライアントが最新の地域 CA バンドルをすでに信頼している場合は、この手順は省略できます。ただし、サーバー CA 情報を使用してクライアントを更新する必要がある場合は、次の操作を行います。
最新のサーバー CA 情報をダウンロードします。
最新のサーバー CA 情報を使用するようにクライアントを更新します。
アクティブな証明書を前のスロットに移動し、新しい証明書をアクティブな証明書に更新することで、ローテーションを完了します。
コンソール
プレビュー版 では、Google Cloud コンソールを使用して、CA Service を使用するインスタンスでサーバー証明書をローテーションすることはできません。代わりに、gcloud beta sql ssl server-certs rotate
コマンドまたは Cloud SQL Admin API コマンドを使用します。
gcloud
サーバー証明書を作成するには、次のコマンドを使用します。
gcloud beta sql ssl server-certs create \
--instance=INSTANCE
INSTANCE は、インスタンス名で置き換えます。
最新の 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 情報を使用するようにすべてのクライアントを更新します。
すべてのクライアントを更新したら(クライアントの更新が必要な場合)、ローテーションを完了します。
gcloud beta sql ssl server-certs rotate \
--instance=INSTANCE_NAME
クライアントが正しく接続していることを確認します。
新しくローテーションが行われたサーバー証明書を使用して接続していないクライアントがある場合は、以前の設定にロールバック します。
REST v1
サーバー証明書を作成します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : プロジェクト ID
INSTANCE_ID : インスタンス ID
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /addServerCertificate
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /addServerCertificate"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /addServerCertificate" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2024-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
サーバー CA 証明書情報をダウンロードする必要がある場合は、次のコマンドを使用できます。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : プロジェクト ID
INSTANCE_ID : インスタンス ID
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /listServerCertificates
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /listServerCertificates"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /listServerCertificates" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"caCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_ONE ",
"cert": "CERT_VALUE ",
"commonName": "CA_SERVER_NAME ",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_ONE ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-07-10T17:18:54.935Z",
"expirationTime": "2034-07-10T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_TWO ",
"cert": "CERT_VALUE ",
"commonName": "CA_SERVER_NAME ",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_TWO ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-07-14T22:43:56.458Z",
"expirationTime": "2034-11-11T22:44:56.458Z"
}
],
"serverCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_ONE ",
"cert": "CERT_VALUE "
"commonName": "SUBJECT_VALUE ",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_ONE ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-09-16T18:11:39Z",
"expirationTime": "2025-09-16T18:11:38Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_TWO ",
"cert": "CERT_VALUE "
"commonName": "SUBJECT_VALUE ",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_TWO ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-09-10T20:56:06Z",
"expirationTime": "2025-09-10T20:56:05Z"
}
],
"activeVersion": "sha1Fingerprint_SERVER_CERT_TWO ",
"kind": "sql#instancesListServerCertificates"
}
ローテーションを完了します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : プロジェクト ID
INSTANCE_ID : インスタンス ID
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /rotateServerCertificate
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /rotateServerCertificate"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /rotateServerCertificate" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2024-09-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/operation-id ",
"targetProject": "PROJECT_ID "
}
REST v1beta4
サーバー証明書を作成します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : プロジェクト ID
INSTANCE_ID : インスタンス ID
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /addServerCertificate
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /addServerCertificate"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /addServerCertificate" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2024-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
サーバー CA 証明書情報をダウンロードする必要がある場合は、次のコマンドを使用できます。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : プロジェクト ID
INSTANCE_ID : インスタンス ID
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /listServerCertificates
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /listServerCertificates"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /listServerCertificates" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"caCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_ONE ",
"cert": "CERT_VALUE ",
"commonName": "CA_SERVER_NAME ",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_ONE ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-07-10T17:18:54.935Z",
"expirationTime": "2034-07-10T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_TWO ",
"cert": "CERT_VALUE ",
"commonName": "CA_SERVER_NAME ",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_TWO ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-07-14T22:43:56.458Z",
"expirationTime": "2034-11-11T22:44:56.458Z"
}
],
"serverCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_ONE ",
"cert": "CERT_VALUE "
"commonName": "SUBJECT_VALUE ",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_ONE ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-09-16T18:11:39Z",
"expirationTime": "2025-09-16T18:11:38Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_TWO ",
"cert": "CERT_VALUE "
"commonName": "SUBJECT_VALUE ",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_TWO ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-09-10T20:56:06Z",
"expirationTime": "2025-09-10T20:56:05Z"
}
],
"activeVersion": "sha1Fingerprint_SERVER_CERT_TWO ",
"kind": "sql#instancesListServerCertificates"
}
ローテーションを完了します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : プロジェクト ID
INSTANCE_ID : インスタンス ID
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /rotateServerCertificate
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /rotateServerCertificate"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /rotateServerCertificate" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2024-09-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
証明書のローテーションをロールバックする
サーバー証明書のローテーションが完了したら、すべてのクライアントが新しい証明書を使用して 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
サーバー証明書を一覧表示します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : プロジェクト ID
INSTANCE_ID : インスタンス ID
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /listServerCertificates
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /listServerCertificates"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /listServerCertificates" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"caCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_ONE ",
"cert": "CERT_VALUE ",
"commonName": "CA_SERVER_NAME ",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_ONE ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-07-10T17:18:54.935Z",
"expirationTime": "2034-07-10T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_TWO ",
"cert": "CERT_VALUE ",
"commonName": "CA_SERVER_NAME ",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_TWO ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-07-14T22:43:56.458Z",
"expirationTime": "2034-11-11T22:44:56.458Z"
}
],
"serverCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_ONE ",
"cert": "CERT_VALUE "
"commonName": "SUBJECT_VALUE ",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_ONE ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-09-16T18:11:39Z",
"expirationTime": "2025-09-16T18:11:38Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_TWO ",
"cert": "CERT_VALUE "
"commonName": "SUBJECT_VALUE ",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_TWO ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-09-10T20:56:06Z",
"expirationTime": "2025-09-10T20:56:05Z"
}
],
"activeVersion": "sha1Fingerprint_SERVER_CERT_TWO ",
"kind": "sql#instancesListServerCertificates"
}
ロールバック先のバージョンの sha1Fingerprint
フィールドをコピーします。
activeVersion
として表示される sha1Fingerprint
値の直前の createTime
値を使用したバージョンを探します。
ローテーションをロールバックします。
リクエストのデータを使用する前に、次のように置き換えます。
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 "}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /rotateServerCertificate"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /rotateServerCertificate" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
REST v1beta4
サーバー証明書を一覧表示します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID : プロジェクト ID
INSTANCE_ID : インスタンス ID
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /listServerCertificates
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /listServerCertificates"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /listServerCertificates" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"caCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_ONE ",
"cert": "CERT_VALUE ",
"commonName": "CA_SERVER_NAME ",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_ONE ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-07-10T17:18:54.935Z",
"expirationTime": "2034-07-10T17:19:54.935Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_CA_CERT_TWO ",
"cert": "CERT_VALUE ",
"commonName": "CA_SERVER_NAME ",
"sha1Fingerprint": "sha1Fingerprint_CA_CERT_TWO ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-07-14T22:43:56.458Z",
"expirationTime": "2034-11-11T22:44:56.458Z"
}
],
"serverCerts": [
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_ONE ",
"cert": "CERT_VALUE "
"commonName": "SUBJECT_VALUE ",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_ONE ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-09-16T18:11:39Z",
"expirationTime": "2025-09-16T18:11:38Z"
},
{
"kind": "sql#sslCert",
"certSerialNumber": "CERT_SERIAL_NUMBER_SERVER_CERT_TWO ",
"cert": "CERT_VALUE "
"commonName": "SUBJECT_VALUE ",
"sha1Fingerprint": "sha1Fingerprint_SERVER_CERT_TWO ",
"instance": "INSTANCE_NAME ",
"createTime": "2024-09-10T20:56:06Z",
"expirationTime": "2025-09-10T20:56:05Z"
}
],
"activeVersion": "sha1Fingerprint_SERVER_CERT_TWO ",
"kind": "sql#instancesListServerCertificates"
}
ロールバック先のバージョンの sha1Fingerprint
フィールドをコピーします。
activeVersion
として表示される sha1Fingerprint
値の直前の createTime
値を使用したバージョンを探します。
ローテーションをロールバックします。
リクエストのデータを使用する前に、次のように置き換えます。
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 "}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /rotateServerCertificate"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /rotateServerCertificate" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
CA 証明書の内容を表示する
openssl storeutl
ユーティリティを使用して、CA 証明書の内容を表示できます。
beta sql ssl server-ca-certs list コマンドを実行すると、トラスト チェーンにより常に複数の CA 証明書が取得されます。以前のローテーション関連のオペレーションから複数の CA 証明書が取得される場合もあります。
gcloud
次のコマンドを実行します。
gcloud beta sql ssl server-certs list \
--instance= INSTANCE_NAME \
--format= 'value(cert)' > temp_cert.pem
INSTANCE_NAME は、インスタンス名で置き換えます。
openssl
を使用して、CA 証明書の内容を確認します。
openssl storeutl -noout -text temp_cert.pem
共有 CA のルート CA 証明書バンドルとリージョン CA 証明書バンドルをダウンロードする
Google 管理の共有 CA 構成を使用している場合は、次の表からルート CA 証明書バンドルとリージョン CA 証明書バンドルをダウンロードできます。
これらの証明書バンドルは、インスタンスごとの CA オプションまたは顧客管理の CA オプションを使用するインスタンスには適用されません。
SSL / TLS 構成をリセットする
SSL / TLS 構成は完全にリセットできます。
注意: この操作を実行すると、以前に使用していたクライアント証明書を置き換える新しいクライアント証明書を作成するまで、SSL / TLS を使用してインスタンスに接続できなくなります。
コンソール
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
Cloud SQL の [インスタンス] に移動
インスタンスの [概要 ] ページを開くには、インスタンス名をクリックします。
SQL ナビゲーション メニューから [接続 ] を選択します。
[SSL 設定をリセット ] セクションに移動します。
[SSL 設定をリセット ] をクリックします。
gcloud
証明書を更新します。
gcloud sql instances reset-ssl-config INSTANCE_NAME
REST v1beta4
証明書を更新します。
リクエストのデータを使用する前に、次のように置き換えます。
project-id : プロジェクト ID
instance-id : インスタンス ID
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /resetSslConfig
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /resetSslConfig"
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /resetSslConfig" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-20T21:30:35.667Z",
"operationType": "UPDATE",
"name": "operation-id ",
"targetId": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /operations/operation-id ",
"targetProject": "project-id "
}
次のステップ