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

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:

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

  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 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, 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 Management.

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