Revocar un certificado

En este documento se describe cómo revocar un certificado mediante el Servicio de Autoridades de Certificación. Al revocar un certificado, se invalida antes de su fecha de vencimiento, lo que impide que se utilice para la autenticación. Puedes revocar un certificado si la clave privada se ha visto comprometida, si el certificado se ha sustituido por otro o si ya no es necesario (por ejemplo, cuando se ha retirado el servicio para el que se emitió el certificado).

Este documento está dirigido a audiencias del grupo de operadores de aplicaciones, como desarrolladores de aplicaciones o científicos de datos, que gestionan los ciclos de vida de los certificados en sus proyectos. Para obtener más información, consulta Audiencias de la documentación aislada de GDC.

Acerca de la revocación de certificados

El servicio de autoridades de certificación 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 han revocado y en los que ya no se confía. De forma predeterminada, se publica una CRL nueva cada 15 minutos. Además, si se revoca un certificado, se genera automáticamente una nueva CRL.

Los certificados emitidos por el servicio de AC incluyen una extensión llamada Punto de distribución de la CRL (CDP). Esta extensión contiene la URL donde puedes encontrar y descargar la CRL de ese certificado. Las aplicaciones cliente usan esta URL para obtener la CRL y comprobar 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 la conexión debe rechazarse.

Antes de empezar

Antes de revocar un certificado, asegúrate de que tienes los permisos necesarios y un archivo kubeconfig.

Permisos obligatorios

Para obtener los permisos que necesitas para revocar un certificado, pide al administrador de gestión de identidades y accesos de tu organización que te conceda el rol Gestor de operaciones del servicio de AC (certificate-authority-service-operation-manager). Para obtener más información sobre los roles, consulta las definiciones de los roles.

Obtener el archivo kubeconfig

Para ejecutar comandos en el servidor de la API Management, haz lo siguiente:

  1. Inicia sesión y genera el archivo kubeconfig del servidor de la API Management si no tienes uno.

  2. Usa la ruta al archivo kubeconfig del servidor de la API de gestión para sustituir MANAGEMENT_API_SERVER_KUBECONFIG en estas instrucciones.

Revocar un certificado

El método para revocar un certificado depende de si la autoridad emisora de certificados (CA) tiene habilitado el modo ACME. Después de revocar un certificado, su número de serie aparece en todas las CRLs futuras de esa CA hasta que caduque.

Revocar un certificado de una CA habilitada para ACME

Cada autoridad de certificación habilitada para ACME expone una URL de servidor ACME única en su estado una vez que está lista. Para revocar un certificado de una AC habilitada para ACME, debes usar una herramienta de cliente de ACME para interactuar con esta URL mediante el protocolo ACME.

Revocar un certificado de una CA habilitada para ACME:

  1. Obtén la URL del servidor ACME de tu AC:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      get certificateauthorities CA_NAME \
      -n USER_PROJECT_NAMESPACE \
      -ojson | jq -r '.status.acme.uri'
    

    Haz los cambios siguientes:

    • MANAGEMENT_API_SERVER_KUBECONFIG: ruta al archivo kubeconfig del servidor de la API Management.
    • CA_NAME: nombre de la AC habilitada para ACME (raíz o subordinada).
    • USER_PROJECT_NAMESPACE: el espacio de nombres del proyecto.
  2. Usa la URL obtenida con la herramienta de cliente de ACME que elijas para enviar una solicitud de revocación. Consulta la documentación de tu cliente de ACME para obtener más información.

Revocar un certificado de una AC con ACME inhabilitado

Si el modo ACME está inhabilitado en la AC, revoca un certificado creando y aplicando un recurso personalizado RevokeCertificateRequest:

  1. Crea un archivo YAML de recursos personalizados RevokeCertificateRequest (por ejemplo, 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
    

    Haz los cambios siguientes:

    • REVOKE_CERT_REQ_NAME: nombre definido por el usuario para la solicitud de revocación.
    • USER_PROJECT_NAMESPACE: el espacio de nombres del proyecto.
    • CERT_REQ_NAME: El nombre del recurso CertificateRequest asociado al certificado que quieras revocar.
    • REASON: el motivo de la revocación. Estos son los 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
    

    Sustituye MANAGEMENT_API_SERVER_KUBECONFIG por la ruta del archivo kubeconfig del servidor de la API Management.

  3. Verifica que la solicitud de revocación del certificado esté lista:

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

    Haz los cambios siguientes:

    • MANAGEMENT_API_SERVER_KUBECONFIG: ruta al archivo kubeconfig del servidor de la API Management.
    • USER_PROJECT_NAMESPACE: el espacio de nombres del proyecto.
    • REVOKE_CERT_REQ_NAME: 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 completa y el número de serie del certificado se añade a la CRL generada a continuación.

Lista de solicitudes de certificados revocados

Mostrar todos los recursos RevokeCertificateRequest de un espacio de nombres de un proyecto:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
  -n USER_PROJECT_NAMESPACE \
  get revokecertificaterequests

Haz los cambios siguientes:

  • MANAGEMENT_API_SERVER_KUBECONFIG: ruta al archivo kubeconfig del servidor de la API Management.
  • USER_PROJECT_NAMESPACE: el espacio de nombres del proyecto.

El resultado es similar al siguiente:

NAMESPACE    NAME                      READY   AGE
foo          revoke-cert-req           True    30s