En este documento, se describe cómo revocar un certificado con Certificate Authority Service. Revocar un certificado lo invalida antes de su fecha de vencimiento, lo que impide que se use para la autenticación. Puedes revocar un certificado si la clave privada está en riesgo, si el certificado se reemplaza por uno nuevo o si ya no es necesario (por ejemplo, cuando se retira el servicio para el que se emitió el certificado).
Este documento está dirigido a públicos dentro del grupo de operadores de aplicaciones, como desarrolladores de aplicaciones o científicos de datos, que administran los ciclos de vida de los certificados dentro de su proyecto. Para obtener más información, consulta Públicos de la documentación de Google Distributed Cloud aislado.
Acerca de la revocación de certificados
El servicio de CA admite la revocación de certificados mediante la publicación de listas de revocación de certificados (CRL). Una CRL es una lista de números de serie de certificados que se revocaron y ya no son de confianza. De forma predeterminada, se publica una CRL nueva cada 15 minutos. Además, cualquier revocación de certificado exitosa activa automáticamente la generación de una CRL nueva.
Los certificados emitidos por el servicio de CA incluyen una extensión llamada punto de distribución de CRL (CDP). Esta extensión contiene la URL en la que puedes encontrar y descargar la CRL de ese certificado. Las aplicaciones cliente usan esta URL para recuperar la CRL y verificar si está presente el número de serie de un certificado. Si el número de serie aparece en la lista, el certificado se considera no válido y se debe rechazar la conexión.
Antes de comenzar
Antes de que puedas revocar un certificado, debes solicitar los permisos necesarios y preparar tu entorno.
Solicita roles de IAM
Para revocar certificados y ver solicitudes de revocación, comunícate con el administrador de IAM de tu organización para solicitar el rol de administrador de operaciones del servicio de CA (certificate-authority-service-operation-manager) en el espacio de nombres del proyecto de la autoridad certificadora.
Prepara el entorno
Genera un archivo kubeconfig para configurar el acceso a
kubectl.
Revoca un certificado
El método para revocar un certificado depende de si la autoridad certificadora (CA) emisora tiene habilitado el modo ACME. Después de revocar un certificado, su número de serie aparece en todas las CRL futuras de esa CA hasta que venza el certificado.
Revoca un certificado de una CA habilitada para ACME
Cada CA habilitada para ACME expone una URL de servidor ACME única en su estado una vez que está lista. Para revocar un certificado de una CA habilitada para ACME, debes usar una herramienta de cliente ACME para interactuar con esta URL mediante el protocolo ACME.
Para revocar un certificado de una CA habilitada para ACME, haz lo siguiente:
Recupera la URL del servidor ACME de tu CA:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ get certificateauthorities CA_NAME \ -n USER_PROJECT_NAMESPACE \ -ojson | jq -r '.status.acme.uri'Reemplaza lo siguiente:
MANAGEMENT_API_SERVER_KUBECONFIG: Es la ruta de acceso al archivo kubeconfig del servidor de la API de administración.CA_NAME: Es el nombre de la CA habilitada para ACME (raíz o subordinada).USER_PROJECT_NAMESPACE: Es el espacio de nombres del proyecto.
Usa la URL obtenida con la herramienta de cliente ACME que elijas para emitir una solicitud de revocación. Consulta la documentación de tu cliente ACME específico para obtener más detalles.
Revoca un certificado de una CA inhabilitada para ACME
Si el modo ACME está inhabilitado en la CA, revoca un certificado creando y aplicando un recurso personalizado RevokeCertificateRequest:
Crea un archivo YAML de recurso personalizado
RevokeCertificateRequest(comorevoke-cert-request.yaml):apiVersion: pki.security.gdc.goog/v1 kind: RevokeCertificateRequest metadata: name: REVOKE_CERT_REQ_NAME namespace: USER_PROJECT_NAMESPACE spec: certificateRequestRef: name: CERT_REQ_NAME namespace: USER_PROJECT_NAMESPACE reason: REASONReemplaza lo siguiente:
REVOKE_CERT_REQ_NAME: Es el nombre definido por el usuario para la solicitud de revocación.USER_PROJECT_NAMESPACE: Es el espacio de nombres del proyecto.CERT_REQ_NAME: Es el nombre del recursoCertificateRequestasociado con el certificado que deseas revocar.REASON: Es el motivo de la revocación. Los siguientes son motivos válidos:Unspecified,KeyCompromise,CaCompromise,AffiliationChanged,Superseded,CessationOfOperation,CertificateHold,RemoveFromCrl,PrivilegeWithdrawnyAaCompromise.
Aplica el recurso personalizado:
kubectl apply -f revoke-cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIGReemplaza MANAGEMENT_API_SERVER_KUBECONFIG por la ruta de acceso al archivo kubeconfig del servidor de la API de Management.
Verifica la preparación de la solicitud de revocación del certificado:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ -n USER_PROJECT_NAMESPACE \ get revokecertificaterequest.pki.security.gdc.goog/REVOKE_CERT_REQ_NAME \ -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))'Reemplaza lo siguiente:
MANAGEMENT_API_SERVER_KUBECONFIG: Es la ruta de acceso al archivo kubeconfig del servidor de la API de administración.USER_PROJECT_NAMESPACE: Es el espacio de nombres del proyecto.REVOKE_CERT_REQ_NAME: Es el nombre de la solicitud de revocación.
El resultado es similar al siguiente:
{ "lastTransitionTime": "2025-08-19T23:20:22Z", "message": "RevokeCertificateRequest reconciled", "observedGeneration": 1, "reason": "Ready", "status": "True", "type": "Ready" }Se completó el proceso y se agregó el número de serie del certificado a la siguiente CRL generada.
Enumera las solicitudes de certificados revocados
Enumera todos los recursos RevokeCertificateRequest en un espacio de nombres del proyecto:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
-n USER_PROJECT_NAMESPACE \
get revokecertificaterequests
Reemplaza lo siguiente:
MANAGEMENT_API_SERVER_KUBECONFIG: Es la ruta de acceso al archivo kubeconfig del servidor de la API de administración.USER_PROJECT_NAMESPACE: Es el espacio de nombres del proyecto.
El resultado es similar al siguiente:
NAMESPACE NAME READY AGE
foo revoke-cert-req True 30s