このページでは、クライアントとサーバーの CA 証明書を管理する方法について説明します。
クライアント証明書の管理
Cloud SQL でクライアント証明書を管理するには、次の手順を実施します。
クライアント証明書を取得する
クライアント証明書のうち、公開鍵の部分は取得できます。ただし、秘密鍵は取得できません。秘密鍵を紛失した場合は、新たに秘密鍵を作成する必要があります。
Console
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
Cloud SQL の [インスタンス] に移動
インスタンスの [概要 ] ページを開くには、インスタンス名をクリックします。
SQL ナビゲーション メニューから [接続 ] を選択します。
[セキュリティ ] タブを選択します。
[クライアント証明書の管理 ] で、証明書の名前をクリックします。
[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
目的の証明書のフィンガープリントを取得するため、インスタンス上にある証明書のリストを表示します。
リクエストのデータを使用する前に、次のように置き換えます。
project-id : プロジェクト ID
instance-id : インスタンス ID
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /sslCerts
リクエストを送信するには、次のいずれかのオプションを展開します。
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 /sslCerts"
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 /sslCerts" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#sslCertsList",
"items": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number ",
"cert": "cert-value ",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint "
"instance": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /sslCerts/sha1FingerPrint ",
"createTime": "2020-02-13T00:10:20.595Z",
"expirationTime": "2030-02-10T00:11:20.595Z"
}
]
}
取得する証明書の sha1Fingerprint
フィールドを記録します。引用符は含めないでください。
証明書を取得します。
リクエストのデータを使用する前に、次のように置き換えます。
project-id : プロジェクト ID
instance-id : インスタンス ID
sha1FingerPrint : 証明書の sha1FingerPrint
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /sslCerts/sha1FingerPrint
リクエストを送信するには、次のいずれかのオプションを展開します。
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 /sslCerts/sha1FingerPrint "
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 /sslCerts/sha1FingerPrint " | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number ",
"cert": "cert-value ",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint "
"instance": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /sslCerts/sha1FingerPrint ",
"createTime": "2020-02-13T00:10:20.595Z",
"expirationTime": "2030-02-10T00:11:20.595Z"
}
引用符で囲まれたすべての証明書データをファイルにコピーします。たとえば、client-cert.pem
のようになります。引用符そのものはコピーしないでください。
REST v1beta4
目的の証明書のフィンガープリントを取得するため、インスタンス上にある証明書のリストを表示します。
リクエストのデータを使用する前に、次のように置き換えます。
project-id : プロジェクト ID
instance-id : インスタンス ID
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /sslCerts
リクエストを送信するには、次のいずれかのオプションを展開します。
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 /sslCerts"
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 /sslCerts" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#sslCertsList",
"items": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number ",
"cert": "cert-value ",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint "
"instance": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /sslCerts/sha1FingerPrint ",
"createTime": "2020-02-13T00:10:20.595Z",
"expirationTime": "2030-02-10T00:11:20.595Z"
}
]
}
取得する証明書の sha1Fingerprint
フィールドを記録します。引用符は含めないでください。
証明書を取得します。
リクエストのデータを使用する前に、次のように置き換えます。
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
リクエストを送信するには、次のいずれかのオプションを展開します。
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 /sslCerts/sha1FingerPrint "
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 /sslCerts/sha1FingerPrint " | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number ",
"cert": "cert-value ",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint "
"instance": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /sslCerts/sha1FingerPrint ",
"createTime": "2020-02-13T00:10:20.595Z",
"expirationTime": "2030-02-10T00:11:20.595Z"
}
引用符で囲まれたすべての証明書データをファイルにコピーします。たとえば、client-cert.pem
のようになります。引用符そのものはコピーしないでください。
クライアント証明書を削除する
クライアント証明書を削除するとデータベース サーバーが更新され、再起動の必要がなくなります。
Console
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
Cloud SQL の [インスタンス] に移動
インスタンスの [概要 ] ページを開くには、インスタンス名をクリックします。
SQL ナビゲーション メニューから [接続 ] を選択します。
[セキュリティ ] タブを選択します。
[クライアント証明書の管理 ] で、削除する証明書を選択して をクリックします。
[クライアント証明書の削除 ] ペインで、[OK ] をクリックします。
gcloud
ssl client-certs delete コマンドを使用してクライアント証明書を削除します。
gcloud sql ssl client-certs delete CERT_NAME \
--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 /sslCerts
リクエストを送信するには、次のいずれかのオプションを展開します。
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 /sslCerts"
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 /sslCerts" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#sslCertsList",
"items": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number ",
"cert": "cert-value ",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint "
"instance": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /sslCerts/sha1FingerPrint ",
"createTime": "2020-02-13T00:10:20.595Z",
"expirationTime": "2030-02-10T00:11:20.595Z"
}
]
}
削除する証明書の sha1Fingerprint
フィールドを記録します。引用符は含めないでください。
証明書を削除します。
リクエストのデータを使用する前に、次のように置き換えます。
project-id : プロジェクト ID
instance-id : インスタンス ID
sha1FingerPrint : 証明書の sha1FingerPrint
HTTP メソッドと URL:
DELETE https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /sslCerts/sha1FingerPrint
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /sslCerts/sha1FingerPrint "
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method DELETE ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /sslCerts/sha1FingerPrint " | 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 /sslCerts
リクエストを送信するには、次のいずれかのオプションを展開します。
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 /sslCerts"
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 /sslCerts" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{
"kind": "sql#sslCertsList",
"items": [
{
"kind": "sql#sslCert",
"certSerialNumber": "cert-serial-number ",
"cert": "cert-value ",
"commonName": "ca-server-name ",
"sha1Fingerprint": "sha1Fingerprint "
"instance": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /sslCerts/sha1FingerPrint ",
"createTime": "2020-02-13T00:10:20.595Z",
"expirationTime": "2030-02-10T00:11:20.595Z"
}
]
}
削除する証明書の sha1Fingerprint
フィールドを記録します。引用符は含めないでください。
証明書を削除します。
リクエストのデータを使用する前に、次のように置き換えます。
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
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /sslCerts/sha1FingerPrint "
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method DELETE ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /sslCerts/sha1FingerPrint " | 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)
このセクションでは、Cloud SQL によって内部で作成されるサーバー CA 証明書を管理する方法について説明します。これは、Cloud SQL のデフォルトのサーバー CA モードです。この認証局階層では、Cloud SQL はインスタンスごとにサーバー CA を作成します。
サーバー CA 証明書をローテーションする
証明書の期限切れに関する通知を受け取った場合やローテーションを開始する場合は、次の手順でローテーションを完了します。ローテーションを開始する前に、インスタンスに新しいサーバー CA が必要です。新しいサーバー CA がすでに作成されている場合は、次の手順の最初のステップをスキップできます。
新しいサーバー CA を作成します。
新しいサーバー CA 証明書情報をダウンロードします。
新しいサーバー CA 証明書情報を使用するようにクライアントを更新します。
ローテーションを完了します。これにより、アクティブな証明書が「前の」スロットに移動し、新しく追加された証明書がアクティブな証明書に更新されます。
SSL 証明書をローテーションした後、App Engine と Cloud SQL Auth Proxy 接続は、接続時に新しい証明書を自動的に受信します。
コンソール
新しいサーバー CA 証明書情報をダウンロードします。
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
Cloud SQL の [インスタンス] に移動
インスタンスの [概要 ] ページを開くには、インスタンス名をクリックします。
SQL ナビゲーション メニューから [接続 ] を選択します。
[セキュリティ ] タブを選択します。
[証明書を管理 ] をクリックして展開します。
[CA 証明書をローテーション ] を選択します。有効な証明書がない場合、ローテーション オプションは使用できません。
[証明書をダウンロード ] をクリックします。
PEM ファイルとしてエンコードされたサーバー CA 証明書情報は、ローカル環境にダウンロードされます。
ダウンロードしたファイルをクライアント ホストマシンにコピーし、既存の server-ca.pem
ファイルを置き換えて、すべての MySQL クライアントを更新し、新しい情報を使用します。
クライアントの更新後、ローテーションを完了します。
[セキュリティ ] タブに戻ります。
[証明書を管理 ] をクリックして展開します。
[CA 証明書をローテーション ] を選択します。
クライアントが正しく接続していることを確認します。新しくローテーションされた証明書を使用して接続しているクライアントが存在しない場合は、[CA 証明書をロールバック ] を選択して前の構成にロールバック できます。
gcloud
サーバー CA 証明書を作成します。
gcloud beta 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 "
}
証明書のローテーション オペレーションをロールバックする
証明書のローテーションを完了したら、クライアントはすべて新しい証明書を使用して Cloud SQL インスタンスに接続する必要があります。クライアントが新しい証明書情報を使用するように正しく更新されていない場合は、SSL/TLS を使用してインスタンスに接続できません。この場合、前の証明書構成にロールバックできます。
ロールバック オペレーションにより、アクティブな証明書が「今後の」スロットに移動されます(「今後の」証明書が置き換えられます)。「前の」証明書がアクティブな証明書になり、証明書構成がローテーションの完了前の状態に戻ります。
注: 証明書のロールバックを利用できるのは、古い証明書の期限が切れるまでです。 以前の証明書構成にロールバックするには:
Console
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 "
}
ローテーションを開始する
ローテーションを開始するにあたって、Cloud SQL からのメールを待つ必要はありません。いつでも開始できます。ローテーションを開始すると、新しい証明書が作成され、「今後の」スロットに配置されます。リクエスト時に「今後の」スロットに証明書がすでに存在する場合、その証明書は削除されます。存在できる「今後の」証明書は 1 つだけです。
ローテーションを開始するには:
Console
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 証明書の内容を表示できます。
beta sql ssl server-ca-certs list コマンドを実行すると、以前のローテーション関連のオペレーションから複数の CA 証明書が取得される場合があります。
gcloud
次のコマンドを実行します。
gcloud beta 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
サーバー証明書の内容を表示する
openssl s_client
を使用して、サーバー証明書の内容を表示できます。
gcloud
サーバー証明書の内容を表示するには、次のコマンドを実行します。
openssl s_client -starttls mysql -connect INSTANCE_IP_ADDRESS :3306
INSTANCE_IP_ADDRESS は、インスタンスの IP アドレスに置き換えます。
サーバー証明書の管理(共有 CA)
プレビュー
この機能には、サービス固有の利用規約 の「一般的なサービス規約」の「pre-GA サービス規約」が適用されます。
pre-GA の機能は「現状有姿」で利用できますが、サポートが制限される場合があります。
詳しくは、リリース ステージの説明 をご覧ください。
このセクションでは、共有 CA を使用するインスタンスでサーバー証明書を管理する方法について説明します。インスタンスのサーバー CA モードとして共有 CA を使用するようにオプトインするには、インスタンスを作成 するときに serverCaMode
設定(Cloud SQL Admin API)に GOOGLE_MANAGED_CAS_CA
または --server-ca-mode
フラグ(gcloud CLI )を指定します。
サーバー証明書のローテーションを行う
証明書の期限切れに関する通知を受け取った場合やローテーションを開始する場合は、次の手順でローテーションを完了します。ローテーションを開始する前に、今後のローテーション用に新しいサーバー証明書を作成する必要があります。次のローテーション用に新しいサーバー証明書がすでに作成されている場合は、次の手順の最初のステップをスキップできます。
インスタンスでサーバー証明書をローテーションするには、次の操作を行います。
新しいサーバー証明書が必要な場合は、作成します。
クライアントがルート CA をすでに信頼している場合は、この手順は省略可能です。ただし、サーバー CA 情報を使用してクライアントを更新する必要がある場合は、次の操作を行います。
最新のサーバー CA 情報をダウンロードします。
最新のサーバー CA 情報を使用するようにクライアントを更新します。
アクティブな証明書を前のスロットに移動し、新しい証明書をアクティブな証明書に更新して、ローテーションを完了します。
Console
プレビュー版 では、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 証明書のバンドルの表 から 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 を使用してインスタンスに接続できません。この場合、前の証明書構成にロールバックできます。
ロールバック オペレーションにより、アクティブな証明書が「今後の」スロットに移動されます(「今後の」証明書が置き換えられます)。「前の」証明書がアクティブな証明書になり、証明書構成がローテーションの完了前の状態に戻ります。
Console
プレビュー 中に、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
フィールドをコピーします。
sha1Fingerprint
値が activeVersion
として表示されるバージョンの直前の 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
フィールドをコピーします。
sha1Fingerprint
値が activeVersion
として表示されるバージョンの直前の 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-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
サーバー証明書の内容を表示する
openssl
ユーティリティと beta sql ssl server-certs list コマンドを使用して、サーバー証明書の内容を表示できます。
gcloud CLI コマンドを実行すると、信頼チェーンにより常に複数の CA 証明書が取得されます。以前のローテーション関連のオペレーションから複数の CA 証明書が取得されることもあります。
gcloud
openssl s_client
のみを使用する :
openssl s_client -starttls mysql -connect INSTANCE_IP_ADDRESS :3306
INSTANCE_IP_ADDRESS は、インスタンスの IP アドレスに置き換えます。
gcloud CLI
と openssl storeutl
を使用する :
次のコマンドを実行します。
gcloud beta sql ssl server-certs list \
--instance= INSTANCE_NAME \
--format= 'value(ssl_cert.cert)' > temp_cert.pem
INSTANCE_NAME は、インスタンス名で置き換えます。
openssl
を使用して、サーバー証明書の内容を確認します。
openssl storeutl -noout -text temp_cert.pem
ルート CA 証明書バンドルとリージョン CA 証明書バンドルをダウンロードする
ルート CA 証明書バンドルとリージョン CA 証明書バンドルは、次の表からダウンロードできます。
SSL / TLS 構成をリセットする
SSL/TLS 構成は完全にリセットできます。
注意: この操作を実行すると、以前に使用していたクライアント証明書を置き換える新しいクライアント証明書を作成するまで、SSL / TLS を使用してインスタンスに接続できなくなります。
Console
Google Cloud Console で、Cloud SQL の [インスタンス] ページに移動します。
Cloud SQL の [インスタンス] に移動
インスタンスの [概要 ] ページを開くには、インスタンス名をクリックします。
SQL ナビゲーション メニューから [接続 ] を選択します。
[SSL 設定をリセット ] セクションに移動します。
[SSL 設定をリセット ] をクリックします。
gcloud
証明書を更新します。
gcloud sql instances reset-ssl-config INSTANCE_NAME
gcloud sql instances restart 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 "
}
新しいクライアント証明書を作成します 。
次のステップ