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 se vulnera la clave privada, si se reemplaza el certificado por uno nuevo o si ya no se necesita (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 Audiences for GDC air-gapped documentation.
Acerca de la revocación de certificados
El servicio de CA admite la revocación de certificados a través de 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 nueva CRL.
Los certificados que emite CA Service incluyen una extensión llamada CRL Distribution Point (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 revocar un certificado, asegúrate de tener los permisos necesarios y un archivo kubeconfig.
Permisos necesarios
Para obtener los permisos que necesitas para revocar un certificado, pídele a tu administrador de IAM de la organización que te otorgue el rol de administrador de operaciones del servicio de CA (certificate-authority-service-operation-manager). Para obtener más información sobre los roles, consulta Definiciones de roles.
Obtén el archivo kubeconfig
Para ejecutar comandos en el servidor de la API de Management, haz lo siguiente:
Accede y genera el archivo kubeconfig para el servidor de la API de Management si no tienes uno.
Usa la ruta de acceso al archivo kubeconfig del servidor de la API de administración para reemplazar
MANAGEMENT_API_SERVER_KUBECONFIGen estas instrucciones.
Cómo revocar un certificado
El método para revocar un certificado depende de si la autoridad certificadora (AC) emisora tiene habilitado el modo ACME. Después de revocar un certificado, su número de serie aparecerá 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 cliente de ACME para interactuar con esta URL a través del protocolo ACME.
Revoca un certificado de una CA habilitada para ACME:
Recupera la URL del servidor de ACME para 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 del cliente de ACME que elijas para emitir una solicitud de revocación. Consulta la documentación de tu cliente de 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 al 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 administración.
Verifica la disponibilidad 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" }El proceso se completó y el número de serie del certificado se agregó a la próxima LCR 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