Gestionar certificados de cliente
Sigue estos procedimientos para gestionar los certificados de cliente en Cloud SQL.
Recuperar un certificado de cliente
Puedes acceder a la parte de la clave pública de un certificado de cliente. En cambio, no puedes acceder a la clave privada. Si has perdido la clave privada, tendrás que crear un certificado nuevo.
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En el menú de navegación de SQL, selecciona Conexiones.
- Selecciona la pestaña Seguridad.
- En Gestionar certificados de cliente, haz clic en el nombre de un certificado.
- Se abre la página Certificado de cliente SSL y se muestra el certificado de cliente (
client-cert.pem
) con un enlace para descargar el certificado.
Obtén la clave pública del certificado de cliente con el comando
ssl client-certs describe
:
gcloud sql ssl client-certs describeCERT_NAME \ --instance=INSTANCE_NAME \ --format="value(cert)" > client-cert.pem
Obtén una lista de los certificados en la instancia para obtener la huella digital del certificado al que quieres acceder:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/
project-id /instances/instance-id /sslCertsPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" } ] }Registra el campo
sha1Fingerprint
del certificado que quieras obtener. No incluyas las comillas.Accede al certificado:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
- sha1FingerPrint: huella digital SHA-1 del certificado
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/
project-id /instances/instance-id /sslCerts/sha1FingerPrint Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" }-
Copia todos los datos del certificado que estén entre comillas
en un archivo, por ejemplo,
client-cert.pem
. No copies las comillas.
Obtén una lista de los certificados en la instancia para obtener la huella digital del certificado al que quieres acceder:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/
project-id /instances/instance-id /sslCertsPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" } ] }Registra el campo
sha1Fingerprint
del certificado que quieras obtener. No incluyas las comillas.Accede al certificado:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
- sha1FingerPrint: huella digital SHA-1 del certificado
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/
project-id /instances/instance-id /sslCerts/sha1FingerPrint Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" }-
Copia todos los datos del certificado que estén entre comillas
en un archivo, por ejemplo,
client-cert.pem
. No copies las comillas.
Eliminar un certificado de cliente
Cuando eliminas un certificado de cliente, el servidor de la base de datos se actualiza y no es necesario reiniciarlo.
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En el menú de navegación de SQL, selecciona Conexiones.
- Selecciona la pestaña Seguridad.
- En Gestionar certificados de cliente, busca el certificado que quieras eliminar y haz clic en
.
- En el panel Eliminar certificado de cliente, haz clic en Aceptar.
Elimina el certificado de cliente con el comando ssl client-certs delete:
gcloud sql ssl client-certs deleteCERT_NAME \ --instance=INSTANCE_NAME
Obtén una lista de los certificados en la instancia para ver la huella digital del certificado que quieres eliminar:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/
project-id /instances/instance-id /sslCertsPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" } ] }Anota el campo
sha1Fingerprint
del certificado que quieras eliminar. No incluyas las comillas.Elimina el certificado:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
- sha1FingerPrint: huella digital SHA-1 del certificado
Método HTTP y URL:
DELETE https://sqladmin.googleapis.com/v1/projects/
project-id /instances/instance-id /sslCerts/sha1FingerPrint Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " }
Obtén una lista de los certificados en la instancia para ver la huella digital del certificado que quieres eliminar:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/
project-id /instances/instance-id /sslCertsPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" } ] }Anota el campo
sha1Fingerprint
del certificado que quieras eliminar. No incluyas las comillas.Elimina el certificado:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
- sha1FingerPrint: huella digital SHA-1 del certificado
Método HTTP y URL:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/
project-id /instances/instance-id /sslCerts/sha1FingerPrint Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " }
Gestionar certificados AC de servidor (AC por instancia)
En esta sección se describe cómo gestionar los certificados de CA de servidor que crea Cloud SQL internamente. Este es el modo de AC del servidor predeterminado en Cloud SQL. En esta jerarquía de autoridades de certificación, Cloud SQL crea una AC de servidor para cada instancia.
Rotar certificados AC del servidor
Si has recibido un aviso sobre el vencimiento de tus certificados o quieres iniciar una rotación, sigue estos pasos para completarla. Antes de iniciar la rotación, debes tener una nueva AC de servidor en la instancia. Si ya se ha creado una nueva CA de servidor, puedes saltarte el primer paso del procedimiento siguiente.
- Crea una nueva AC de servidor.
- Descarga la información del nuevo certificado AC del servidor.
- Actualiza tus clientes para que usen la nueva información del certificado de AC del servidor.
- Completa la rotación, que mueve el certificado activo a la ranura "anterior" y actualiza el certificado recién añadido para que sea el certificado activo.
Descarga el nuevo certificado de AC del servidor, codificado como archivo PEM, en tu entorno local:
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En el menú de navegación de SQL, selecciona Conexiones.
- Selecciona la pestaña Seguridad.
- Haz clic en Gestionar certificados para desplegarlo.
- Selecciona Rotar certificado de AC.
Si no hay ningún certificado apto, la opción de rotación no estará disponible. Debes crear un certificado AC del servidor.
- Haz clic en Descargar certificados.
Actualiza todos tus clientes de PostgreSQL para que usen la nueva información. Para ello, copia el archivo descargado en los hosts de tus clientes y sustituye el archivo server-ca.pem
.
Una vez que haya actualizado sus clientes, complete la rotación:
- Vuelve a la pestaña Seguridad.
- Haz clic en Gestionar certificados para desplegarlo.
- Selecciona Rotar certificado de AC.
- Confirma que tus clientes se conectan correctamente.
Si algún cliente no se conecta con el certificado recién renovado, puedes seleccionar Restaurar certificado de CA para restaurar la configuración anterior.
- Crea un certificado AC del servidor:
gcloud sql ssl server-ca-certs create \ --instance=
INSTANCE - Descarga la información del certificado en un archivo PEM local:
gcloud sql ssl server-ca-certs list \ --format="value(cert)" \ --instance=
INSTANCE_NAME > \FILE_PATH /FILE_NAME .pem - Actualiza todos tus clientes para que usen la nueva información copiando el archivo descargado en los equipos host de tus clientes y sustituyendo los archivos server-ca.pem que ya tengas.
- Una vez que haya actualizado sus clientes, complete la rotación:
gcloud sql ssl server-ca-certs rotate \ --instance=
INSTANCE_NAME - Confirma que tus clientes se conectan correctamente.
Si algún cliente no se conecta con el certificado recién rotado, puedes restaurar la configuración anterior.
- Descarga los certificados AC de tu servidor:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/
project-id /instances/instance-id /listServerCasPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" } - Completa la rotación:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/
project-id /instances/instance-id /rotateServerCaPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " }
- Descarga los certificados AC de tu servidor:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/
project-id /instances/instance-id /listServerCasPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" } - Completa la rotación:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/
project-id /instances/instance-id /rotateServerCaPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " }
Si recibes un error al intentar rotar un certificado que dice
No upcoming/previous Server CA Certificate exists
, comprueba que
estás ejecutando el comando en una instancia que usa la jerarquía de CA por instancia.
Para ver qué jerarquía de CA está configurada en una instancia de Cloud SQL, usa el comando gcloud sql instances describe
.
Para obtener más información, consulta Ver información de la instancia.
Restaurar una operación de rotación de certificados
Una vez que hayas completado la rotación de un certificado, todos tus clientes deberán usar el nuevo certificado para conectarse a tu instancia de Cloud SQL. Si los clientes no se actualizan correctamente para usar la nueva información del certificado, no podrán conectarse a tu instancia mediante SSL/TLS. Si esto ocurre, puedes restaurar la configuración del certificado anterior.
Una operación de reversión mueve el certificado activo a la ranura "próximo" (y sustituye cualquier certificado "próximo"). El certificado "anterior" se convierte en el certificado activo, lo que hace que la configuración de tu certificado vuelva al estado que tenía antes de completar la rotación.
Para volver a la configuración de certificado anterior, haz lo siguiente:
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En el menú de navegación de SQL, selecciona Conexiones.
- Selecciona la pestaña Seguridad.
- Haz clic en Gestionar certificados para desplegarlo.
- Selecciona Restaurar certificado de AC.
Si no hay ningún certificado apto, la opción de revertir no estará disponible. De lo contrario, la reversión se completará al cabo de unos segundos.
gcloud sql ssl server-ca-certs rollback \ --instance=INSTANCE_NAME
- Descarga los certificados AC de tu servidor:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/
project-id /instances/instance-id /listServerCasPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" } - Copia el campo
sha1Fingerprint
de la versión a la que quieras volver.Busca la versión con un valor de createTime inmediatamente anterior a la versión con el valor de sha1Fingerprint que se muestra como
activeVersion
. - Restaurar la rotación:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/
project-id /instances/instance-id /rotateServerCaCuerpo JSON de la solicitud:
{ "rotateServerCaContext": {"nextVersion": "
sha1Fingerprint "} }Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando: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)
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " }
- Descarga los certificados AC de tu servidor:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/
project-id /instances/instance-id /listServerCasPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" } - Copia el campo
sha1Fingerprint
de la versión a la que quieras volver.Busca la versión con un valor de createTime inmediatamente anterior a la versión con el valor de sha1Fingerprint que se muestra como
activeVersion
. - Restaurar la rotación:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/
project-id /instances/instance-id /rotateServerCaCuerpo JSON de la solicitud:
{ "rotateServerCaContext": {"nextVersion": "
sha1Fingerprint "} }Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando: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)
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " }
Si recibes un error al intentar revertir una rotación de la CA de un certificado que dice
No upcoming/previous Server CA Certificate exists
, verifica que
estás ejecutando el comando en una instancia que usa la jerarquía de CAs por instancia.
Para ver qué jerarquía de CA está configurada en una instancia de Cloud SQL, usa el comando gcloud sql instances describe
.
Para obtener más información, consulta Ver información de la instancia.
Iniciar una rotación
No es necesario que esperes el correo de Cloud SQL para iniciar una rotación. Puedes empezar una en cualquier momento. Cuando inicias una rotación, se crea un nuevo certificado y se coloca en el espacio "Próximo". Si ya hay un certificado en la ranura "Próximos" en el momento de tu solicitud, se eliminará. Solo puede haber un certificado próximo.
Para iniciar una rotación:
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En el menú de navegación de SQL, selecciona Conexiones.
- Selecciona la pestaña Seguridad.
- Haz clic en Gestionar certificados para desplegarlo.
- Haz clic en Crear certificado de CA.
- Selecciona Rotar certificado de AC.
Si no hay ningún certificado apto, la opción de rotación no estará disponible.
- Completa la rotación tal como se describe en Rotar certificados AC de servidor.
- Inicia la rotación:
gcloud sql ssl server-ca-certs create \ --instance=
INSTANCE_NAME - Completa la rotación tal como se describe en Rotar certificados AC de servidor.
-
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/
project-id /instances/instance-id /rotateServerCaPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " } - Completa la rotación tal como se describe en Rotar certificados AC de servidor.
-
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/
project-id /instances/instance-id /rotateServerCaPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " } - Completa la rotación tal como se describe en Rotar certificados AC de servidor.
Obtener información sobre un certificado AC de servidor
Puedes obtener información sobre tu certificado de CA del servidor, como cuándo caduca o qué nivel de cifrado proporciona.
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En el menú de navegación de SQL, selecciona Conexiones.
- Selecciona la pestaña Seguridad.
En Gestionar certificados AC de servidor, puedes ver la fecha de vencimiento de tu certificado AC de servidor en la tabla.
Para ver el tipo de certificado, usa el comando
gcloud sql ssl server-ca-certs list
.--instance=INSTANCE_NAME
gcloud sql ssl server-ca-certs list \ --instance=INSTANCE_NAME
Cuando describas tu instancia, podrás ver los detalles del certificado AC del servidor:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id ?fields=serverCaCert
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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
Deberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" } }
Cuando describas tu instancia, podrás ver los detalles del certificado de CA del servidor:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id ?fields=serverCaCert
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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
Deberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" } }
Ver el contenido de los certificados de CA
Puedes usar openssl storeutl
para ver el contenido de los certificados de CA.
Cuando ejecutas el comando sql ssl server-ca-certs list, puedes obtener varios certificados de CA de operaciones anteriores relacionadas con la rotación.
- Ejecuta el siguiente comando:
gcloud sql ssl server-ca-certs list \ --instance=
INSTANCE_NAME \ --format='value(cert)' > temp_cert.pemSustituye INSTANCE_NAME por el nombre de la instancia.
- Usa
openssl
para examinar el contenido de los certificados de AC.
openssl storeutl -noout -text temp_cert.pem
Ver el contenido de un certificado de servidor
Puedes usaropenssl s_client
para ver el contenido de los certificados de servidor.
Para ver el contenido del certificado del servidor, ejecuta el siguiente comando:
openssl s_client -starttls postgres -connectINSTANCE_IP_ADDRESS :5432
Sustituye INSTANCE_IP_ADDRESS por la dirección IP de la instancia.
Notificación de vencimiento de SSL de servidor externo
- Si el certificado de AC del servidor externo va a caducar, renueva los certificados SSL, incluido el certificado de AC del servidor de la instancia local. Este paso depende de cómo se gestione la instancia local. Los pasos pueden variar si, por ejemplo, usas un certificado de CA de servidor de RDS, un certificado de CA de servidor de Cloud SQL o un certificado de CA de servidor genérico de base de datos.
- Si el certificado de cliente va a caducar, debes generar un nuevo certificado y una nueva clave. Esto se aplica tanto a los certificados SSL gestionados por Google Cloudcomo a los certificados autofirmados.
- Actualiza la instancia de representación de origen de Cloud SQL con los nuevos certificados SSL.
Gestionar certificados de servidor (AC compartida)
En esta sección se describe cómo gestionar los certificados de servidor en instancias que usan ACs compartidas o ACs gestionadas por el cliente.
Para usar CAs compartidas como modo de CA de servidor de tu instancia, especifica GOOGLE_MANAGED_CAS_CA
en el ajuste serverCaMode
(API Cloud SQL Admin) o la marca --server-ca-mode
(CLI de gcloud) al crear la instancia.
Para usar una AC gestionada por el cliente como modo de AC de servidor de tu instancia, debes especificar CUSTOMER_MANAGED_CAS_CA
en el ajuste serverCaMode
(API Cloud SQL Admin) o la marca --server-ca-mode
(CLI de gcloud) al crear la instancia. Además, debes tener un grupo de AC y una AC válidos. Para obtener más información, consulta Usar una CA gestionada por el cliente.
Rotar certificados de servidor
Si has recibido un aviso de que tus certificados de servidor van a caducar o quieres iniciar una rotación, sigue estos pasos para completarla. Antes de iniciar la rotación, debe haber un nuevo certificado de servidor creado para la próxima rotación. Si ya se ha creado un nuevo certificado de servidor para la próxima rotación, puedes saltarte el primer paso del procedimiento siguiente.
Para rotar el certificado de servidor de tu instancia, sigue estos pasos:
Si necesitas un nuevo certificado de servidor, crea uno.
Si tus clientes ya confían en la CA raíz, este paso es opcional. Sin embargo, si necesita actualizar sus clientes con información de la CA del servidor, siga estos pasos:
- Descarga la información más reciente de la AC del servidor.
- Actualiza tus clientes para que usen la información más reciente de la CA del servidor.
Completa la rotación moviendo el certificado activo a la ranura anterior y actualizando el nuevo certificado para que sea el activo.
Descarga la información del certificado de la AC del servidor, codificada como un archivo PEM, en tu entorno local:
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En el menú de navegación de SQL, selecciona Conexiones.
- Selecciona la pestaña Seguridad.
- Haz clic en Gestionar certificados para desplegarlo.
- Confirma que la opción Rotar certificado de servidor aparece como una opción disponible, pero no la selecciones todavía.
Si no hay ningún certificado apto, la opción de rotación no estará disponible. Debes crear un nuevo certificado de servidor.
- Haz clic en Descargar certificados.
Actualiza todos tus clientes de PostgreSQL para que usen la nueva información. Para ello, copia el archivo descargado en los hosts de tus clientes y sustituye el archivo server-ca.pem
.
Una vez que haya actualizado sus clientes, complete la rotación:
- Vuelve a la pestaña Seguridad.
- Haz clic en Gestionar certificados para desplegarlo.
- Selecciona Rotar certificado.
- En el cuadro de diálogo Confirm certificate rotation (Confirmar rotación de certificado), haz clic en Rotate (Rotar).
Confirma que tus clientes se conectan correctamente.
Si algún cliente no se conecta con el certificado recién rotado, puedes seleccionar Restaurar certificado para restaurar la configuración anterior.
- Para crear un certificado de servidor, usa el siguiente comando:
gcloud sql ssl server-certs create \ --instance=
INSTANCE
Sustituye INSTANCE por el nombre de la instancia.
- Asegúrate de que estás usando el paquete de CA más reciente.
Si no usas el paquete de AC más reciente, ejecuta el siguiente comando para descargar la información de la AC del servidor más reciente de la instancia en un archivo PEM local:
gcloud sql ssl server-certs list \ --format="value(ca_cert.cert)" \ --instance=
INSTANCE_NAME > \FILE_PATH /server-ca.pemTambién puedes descargar los paquetes de ACs de la tabla de paquetes de certificados de ACs raíz y regionales de esta página.
A continuación, actualiza todos tus clientes para que usen la nueva información de la CA del servidor copiando el archivo descargado en los equipos host de los clientes y sustituyendo los archivos
server-ca.pem
. - Después de actualizar todos tus clientes (si es necesario), completa la rotación:
gcloud sql ssl server-certs rotate \ --instance=
INSTANCE_NAME Confirma que tus clientes se conectan correctamente.
Si algún cliente no se conecta con el certificado de servidor recién rotado, restaura la configuración anterior.
Crea un certificado de servidor.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/
PROJECT_ID /instances/INSTANCE_ID /addServerCertificatePara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " }Si necesitas descargar información sobre el certificado de AC del servidor, puedes usar el siguiente comando.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/
PROJECT_ID /instances/INSTANCE_ID /listServerCertificatesPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" }Completa la rotación.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/
PROJECT_ID /instances/INSTANCE_ID /rotateServerCertificatePara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " }
Crea un certificado de servidor.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/
PROJECT_ID /instances/INSTANCE_ID /addServerCertificatePara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " }Si necesitas descargar información sobre el certificado de AC del servidor, puedes usar el siguiente comando.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/
PROJECT_ID /instances/INSTANCE_ID /listServerCertificatesPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" }Completa la rotación.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/
PROJECT_ID /instances/INSTANCE_ID /rotateServerCertificatePara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " }
Restaurar una rotación de certificados
Una vez que hayas completado la rotación del certificado de servidor, todos tus clientes deberán usar el nuevo certificado para conectarse a tu instancia de Cloud SQL. Si los clientes no se actualizan correctamente para usar la nueva información del certificado, no podrán conectarse a tu instancia mediante SSL/TLS. Si esto ocurre, puedes volver a la configuración del certificado anterior.
Una operación de reversión mueve el certificado activo a la ranura "Próximo", que sustituye a cualquier certificado "Próximo". El certificado "anterior" se convierte en el certificado activo y la configuración del certificado vuelve al estado anterior a la rotación.
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En el menú de navegación de SQL, selecciona Conexiones.
- Selecciona la pestaña Seguridad.
- Haz clic en Gestionar certificados para desplegarlo.
- Selecciona Restaurar certificado de servidor.
Si no hay ningún certificado apto, la opción de revertir no estará disponible.
- En el cuadro de diálogo Confirmar reversión del certificado, selecciona Revertir.
La reversión puede tardar unos segundos en completarse.
gcloud sql ssl server-certs rollback \ --instance=INSTANCE_NAME
Enumera tus certificados de servidor.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/
PROJECT_ID /instances/INSTANCE_ID /listServerCertificatesPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" }Copia el campo
sha1Fingerprint
de la versión a la que quieras volver.Busca la versión con un valor de
createTime
inmediatamente anterior a la versión con el valor desha1Fingerprint
que se muestra comoactiveVersion
.Restaurar la rotación.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/
PROJECT_ID /instances/INSTANCE_ID /rotateServerCertificateCuerpo JSON de la solicitud:
{ "rotateServerCertificateContext": {"nextVersion": "
sha1Fingerprint "} }Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando: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)
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " }
Enumera tus certificados de servidor.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/
PROJECT_ID /instances/INSTANCE_ID /listServerCertificatesPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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" }Copia el campo
sha1Fingerprint
de la versión a la que quieras volver.Busca la versión con un valor de
createTime
inmediatamente anterior a la versión con el valor desha1Fingerprint
que se muestra comoactiveVersion
.Restaurar la rotación.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/
PROJECT_ID /instances/INSTANCE_ID /rotateServerCertificateCuerpo JSON de la solicitud:
{ "rotateServerCertificateContext": {"nextVersion": "
sha1Fingerprint "} }Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando: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)
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " }
Ver el contenido de los certificados de CA
Puedes usar la utilidad openssl storeutl
para ver el contenido de los certificados de AC.
Cuando ejecutas el comando sql ssl server-certs list, siempre obtienes varios certificados de CA debido a la cadena de confianza. También es posible que obtengas varios certificados de CA de operaciones anteriores relacionadas con la rotación.
- Ejecuta el siguiente comando:
gcloud sql ssl server-certs list \ --instance=
INSTANCE_NAME \ --format='value(cert)' > temp_cert.pemSustituye INSTANCE_NAME por el nombre de la instancia.
- Usa
openssl
para examinar el contenido de los certificados de AC.
openssl storeutl -noout -text temp_cert.pem
Ver el contenido de un certificado de servidor
Puedes usar las utilidades openssl
y el comando sql ssl server-certs list
para ver el contenido de un certificado de servidor.
Cuando ejecutas el comando de la CLI de gcloud, siempre obtienes varios certificados de AC debido a la cadena de confianza. También es posible que tengas varios certificados de CA de operaciones anteriores relacionadas con la rotación.
Usar solo openssl s_client
:
openssl s_client -starttls postgres -connectINSTANCE_IP_ADDRESS :5432
Sustituye INSTANCE_IP_ADDRESS por la dirección IP de la instancia.
Usa gcloud CLI
y openssl storeutl
:
- Ejecuta el siguiente comando:
gcloud sql ssl server-certs list \ --instance=
INSTANCE_NAME \ --format='value(ssl_cert.cert)' > temp_cert.pemSustituye INSTANCE_NAME por el nombre de la instancia.
- Usa
openssl
para examinar el contenido de los certificados de servidor.
openssl storeutl -noout -text temp_cert.pem
Descargar paquetes de certificados de AC raíz y regional para una AC compartida
Si usas una configuración de AC compartida gestionada por Google, puedes descargar los paquetes de certificados de AC raíz y regional de la siguiente tabla.
Estos paquetes de certificados no se aplican a las instancias que usan las opciones de CA por instancia o gestionada por el cliente.
Nombre de la región | Ubicación | Paquete de certificados | |
---|---|---|---|
Global | |||
Autoridad de certificación para todas las regiones | Todas las ubicaciones | global.pem |
|
Asia | |||
asia-east1 |
Taiwán | asia-east1.pem |
|
asia-east2 |
Hong Kong | asia-east2.pem |
|
asia-northeast1 |
Tokio | asia-northeast1.pem |
|
asia-northeast2 |
Osaka | asia-northeast2.pem |
|
asia-northeast3 |
Seúl | asia-northeast3.pem |
|
asia-south1 |
Bombay | asia-south1.pem |
|
asia-south2 |
Deli | asia-south2.pem |
|
asia-southeast1 |
Singapur | asia-southeast1.pem |
|
asia-southeast2 |
Yakarta | asia-southeast2.pem |
|
África | |||
africa-south1 |
Johannesburgo | africa-south1.pem |
|
Australia | |||
australia-southeast1 |
Sídney | australia-southeast1.pem |
|
australia-southeast2 |
Melbourne | australia-southeast2.pem |
|
Europa | |||
europe-central2 |
Varsovia | europe-central2.pem |
|
europe-north1 |
Finlandia | europe-north1.pem |
|
europe-north2 |
Estocolmo | europe-north2.pem |
|
europe-southwest1 |
Madrid | europe-southwest1.pem |
|
europe-west1 |
Bélgica | europe-west1.pem |
|
europe-west2 |
Londres | europe-west2.pem |
|
europe-west3 |
Fráncfort | europe-west3.pem |
|
europe-west4 |
Países Bajos | europe-west4.pem |
|
europe-west6 |
Zúrich | europe-west6.pem |
|
europe-west8 |
Milán | europe-west8.pem |
|
europe-west9 |
París | europe-west9.pem |
|
europe-west10 |
Berlín | europe-west10.pem |
|
europe-west12 |
Turín | europe-west12.pem |
|
Oriente Medio | |||
me-central1 |
Doha | me-central1.pem |
|
me-central2 |
Dammam | me-central2.pem |
|
me-west1 |
Tel Aviv | me-west1.pem |
|
Norteamérica | |||
northamerica-northeast1 |
Montreal | northamerica-northeast1.pem |
|
northamerica-northeast2 |
Toronto | northamerica-northeast2.pem |
|
northamerica-south1 |
México | northamerica-south1.pem |
|
us-central1 |
Iowa | us-central1.pem |
|
us-east1 |
Carolina del Sur | us-east1.pem |
|
us-east4 |
Norte de Virginia | us-east4.pem |
|
us-east5 |
Columbus | us-east5.pem |
|
us-south1 |
Dallas | us-south1.pem |
|
us-west1 |
Oregón | us-west1.pem |
|
us-west2 |
Los Ángeles | us-west2.pem |
|
us-west3 |
Salt Lake City | us-west3.pem |
|
us-west4 |
Las Vegas | us-west4.pem |
|
Sudamérica | |||
southamerica-east1 |
São Paulo | southamerica-east1.pem |
|
southamerica-west1 |
Santiago | southamerica-west1.pem |
Restablecer la configuración de SSL/TLS
Puedes restablecer por completo tu configuración de SSL/TLS.
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En el menú de navegación de SQL, selecciona Conexiones.
- Ve a la sección Restablecer configuración de SSL.
- Haz clic en Restablecer configuración de SSL.
Actualiza el certificado:
gcloud sql instances reset-ssl-config
INSTANCE_NAME - Crea nuevos certificados de cliente.
Actualiza el certificado:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/
project-id /instances/instance-id /resetSslConfigPara enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el comando siguiente:
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)
Ejecuta el comando siguiente:
$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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Respuesta
{ "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 " }- Crea nuevos certificados de cliente.
Siguientes pasos
- Consulta más información sobre SSL/TLS en Cloud SQL.
- Configura SSL/TLS en tu instancia de Cloud SQL.
- Conéctate mediante SSL/TLS a tu instancia de Cloud SQL.
- Consulta más información sobre cómo usa PostgreSQL SSL/TLS.
- Consulta todos los Google Cloud servicios disponibles en ubicaciones de todo el mundo.