En esta página se describe cómo gestionar los certificados de la autoridad de certificación (CA) de cliente y de servidor.
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.
Consola
En la Google Cloud consola, ve a la página Instancias de Cloud SQL .
Ir a 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.
gcloud
Obtén la clave pública del certificado de cliente con el comando
ssl client-certs describe
:
gcloud sql ssl client-certs describe CERT_NAME \
--instance= INSTANCE_NAME \
--format= "value(cert)" > client-cert.pem
REST v1
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 /sslCerts
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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.
REST v1beta4
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 /sslCerts
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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.
Consola
En la Google Cloud consola, ve a la página Instancias de Cloud SQL .
Ir a 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 .
gcloud
Elimina el certificado de cliente con el comando
ssl client-certs delete :
gcloud sql ssl client-certs delete CERT_NAME \
--instance= INSTANCE_NAME
REST v1
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 /sslCerts
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 "
}
REST v1beta4
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 /sslCerts
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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.
Después de rotar el certificado SSL, tus conexiones de App Engine y del proxy de autenticación de Cloud SQL recibirán automáticamente un nuevo certificado cuando se conecten.
Consola
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 .
Ir a 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.
gcloud
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.
REST v1
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 /listServerCas
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 /rotateServerCa
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 "
}
REST v1beta4
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 /listServerCas
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 /rotateServerCa
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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.
Nota: La restauración de certificados solo está disponible hasta que caduque el certificado antiguo.
Para volver a la configuración de certificado anterior, haz lo siguiente:
Consola
En la Google Cloud consola, ve a la página Instancias de Cloud SQL .
Ir a 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
gcloud sql ssl server-ca-certs rollback \
--instance=INSTANCE_NAME
REST v1
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 /listServerCas
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 /rotateServerCa
Cuerpo JSON de la solicitud:
{
"rotateServerCaContext": {"nextVersion": "sha1Fingerprint "}
}
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 "
}
REST v1beta4
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 /listServerCas
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 /rotateServerCa
Cuerpo JSON de la solicitud:
{
"rotateServerCaContext": {"nextVersion": "sha1Fingerprint "}
}
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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:
Consola
En la Google Cloud consola, ve a la página Instancias de Cloud SQL .
Ir a 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 .
gcloud
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 .
REST v1
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 /rotateServerCa
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 .
REST v1beta4
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 /rotateServerCa
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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.
Consola
En la Google Cloud consola, ve a la página Instancias de Cloud SQL .
Ir a 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
gcloud sql ssl server-ca-certs list \
--instance= INSTANCE_NAME
REST v1
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)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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"
}
}
REST v1beta4
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)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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.
gcloud
Ejecuta el siguiente comando:
gcloud sql ssl server-ca-certs list \
--instance= INSTANCE_NAME \
--format= 'value(cert)' > temp_cert.pem
Sustituye 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
openssl s_client
para ver el contenido de los certificados de servidor.
gcloud
Para ver el contenido del certificado del servidor, ejecuta el siguiente comando:
openssl s_client -starttls postgres -connect INSTANCE_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.
Consola
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 .
Ir a 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.
gcloud
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.pem
Tambié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.
REST v1
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 /addServerCertificate
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 /listServerCertificates
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 /rotateServerCertificate
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 "
}
REST v1beta4
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 /addServerCertificate
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 /listServerCertificates
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 /rotateServerCertificate
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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.
Consola
En la Google Cloud consola, ve a la página Instancias de Cloud SQL .
Ir a 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
gcloud sql ssl server-certs rollback \
--instance=INSTANCE_NAME
REST v1
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 /listServerCertificates
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 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 /rotateServerCertificate
Cuerpo JSON de la solicitud:
{
"rotateServerCertificateContext": {"nextVersion": "sha1Fingerprint "}
}
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 "
}
REST v1beta4
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 /listServerCertificates
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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 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 /rotateServerCertificate
Cuerpo JSON de la solicitud:
{
"rotateServerCertificateContext": {"nextVersion": "sha1Fingerprint "}
}
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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.
gcloud
Ejecuta el siguiente comando:
gcloud sql ssl server-certs list \
--instance= INSTANCE_NAME \
--format= 'value(cert)' > temp_cert.pem
Sustituye 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.
gcloud
Usar solo openssl s_client
:
openssl s_client -starttls postgres -connect INSTANCE_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.pem
Sustituye 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.
Restablecer la configuración de SSL/TLS
Puedes restablecer por completo tu configuración de SSL/TLS.
Precaución: Si realizas esta acción, no podrás conectarte a tu instancia mediante SSL o TLS hasta que crees nuevos certificados de cliente para sustituir los que se estuvieran usando.
Consola
En la Google Cloud consola, ve a la página Instancias de Cloud SQL .
Ir a 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 .
REST v1beta4
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 /resetSslConfig
Para enviar tu solicitud, despliega una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
En el siguiente comando se presupone que has iniciado sesión en la CLI de gcloud
con tu cuenta de usuario ejecutando gcloud init
o gcloud auth login
, o bien usando Cloud Shell ,
que inicia sesión automáticamente en la CLI de gcloud
.
Para comprobar qué cuenta está activa, ejecuta gcloud auth list
.
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 Content
Deberí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