Cómo revocar un certificado

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:

  1. Accede y genera el archivo kubeconfig para el servidor de la API de Management si no tienes uno.

  2. Usa la ruta de acceso al archivo kubeconfig del servidor de la API de administración para reemplazar MANAGEMENT_API_SERVER_KUBECONFIG en 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:

  1. 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.
  2. 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:

  1. Crea un archivo YAML de recurso personalizado RevokeCertificateRequest (como revoke-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: REASON
    

    Reemplaza 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 recurso CertificateRequest asociado 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, PrivilegeWithdrawn y AaCompromise.
  2. Aplica el recurso personalizado:

    kubectl apply -f revoke-cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
    

    Reemplaza MANAGEMENT_API_SERVER_KUBECONFIG por la ruta de acceso al archivo kubeconfig del servidor de la API de administración.

  3. 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