Révoquer un certificat

Ce document explique comment révoquer un certificat à l'aide de Certificate Authority Service. La révocation d'un certificat le rend non valide avant sa date d'expiration, ce qui l'empêche d'être utilisé pour l'authentification. Vous pouvez révoquer un certificat si la clé privée est compromise, si le certificat est remplacé par un nouveau certificat ou si le certificat n'est plus nécessaire (par exemple, lorsque le service pour lequel le certificat a été émis est mis hors service).

Ce document s'adresse aux membres du groupe des opérateurs d'applications, tels que les développeurs d'applications ou les data scientists, qui gèrent les cycles de vie des certificats dans leur projet. Pour en savoir plus, consultez la documentation sur les audiences pour GDC air-gapped.

À propos de la révocation des certificats

CA Service est compatible avec la révocation de certificats en publiant des listes de révocation de certificats (CRL). Une CRL est une liste des numéros de série des certificats qui ont été révoqués et ne sont plus approuvés. Par défaut, une nouvelle CRL est publiée toutes les 15 minutes. De plus, toute révocation de certificat réussie déclenche automatiquement la génération d'une nouvelle CRL.

Les certificats émis par CA Service incluent une extension appelée "CRL Distribution Point" (CDP, point de distribution de la liste de révocation de certificats). Cette extension contient l'URL où vous pouvez trouver et télécharger la CRL pour ce certificat. Les applications clientes utilisent cette URL pour récupérer la CRL et vérifier si le numéro de série d'un certificat est présent. Si le numéro de série figure dans la liste, le certificat est considéré comme non valide et la connexion doit être refusée.

Avant de commencer

Avant de pouvoir révoquer un certificat, assurez-vous de disposer des autorisations requises et d'un fichier kubeconfig.

Autorisations requises

Pour obtenir les autorisations nécessaires pour révoquer un certificat, demandez à votre administrateur IAM de l'organisation de vous accorder le rôle Responsable des opérations du service CA (certificate-authority-service-operation-manager). Pour en savoir plus sur les rôles, consultez Définitions des rôles.

Obtenir le fichier kubeconfig

Pour exécuter des commandes sur le serveur de l'API Management, procédez comme suit :

  1. Connectez-vous et générez le fichier kubeconfig pour le serveur d'API Management si vous n'en avez pas.

  2. Utilisez le chemin d'accès au fichier kubeconfig du serveur de l'API Management pour remplacer MANAGEMENT_API_SERVER_KUBECONFIG dans ces instructions.

Révoquer un certificat

La méthode de révocation d'un certificat dépend de l'activation ou non du mode ACME par l'autorité de certification (CA) émettrice. Une fois que vous avez révoqué un certificat, son numéro de série apparaît dans toutes les futures LRC de cette autorité de certification jusqu'à l'expiration du certificat.

Révoquer un certificat auprès d'une autorité de certification compatible avec ACME

Chaque CA compatible avec ACME expose une URL de serveur ACME unique dans son état une fois qu'il est prêt. Pour révoquer un certificat d'une autorité de certification compatible avec ACME, vous devez utiliser un outil client ACME pour interagir avec cette URL à l'aide du protocole ACME.

Révoquez un certificat auprès d'une autorité de certification compatible avec ACME :

  1. Récupérez l'URL du serveur ACME pour votre CA :

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

    Remplacez les éléments suivants :

    • MANAGEMENT_API_SERVER_KUBECONFIG : chemin d'accès au fichier kubeconfig du serveur de l'API Management.
    • CA_NAME : nom de l'autorité de certification compatible ACME (racine ou subordonnée).
    • USER_PROJECT_NAMESPACE : espace de noms du projet.
  2. Utilisez l'URL obtenue avec l'outil client ACME de votre choix pour envoyer une demande de révocation. Pour en savoir plus, consultez la documentation de votre client ACME.

Révoquer un certificat auprès d'une autorité de certification ACME désactivée

Si le mode ACME est désactivé sur l'autorité de certification, révoquez un certificat en créant et en appliquant une ressource personnalisée RevokeCertificateRequest :

  1. Créez un fichier YAML de ressource personnalisée RevokeCertificateRequest (par exemple, 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
    

    Remplacez les éléments suivants :

    • REVOKE_CERT_REQ_NAME : nom défini par l'utilisateur pour la demande de révocation.
    • USER_PROJECT_NAMESPACE : espace de noms du projet.
    • CERT_REQ_NAME : nom de la ressource CertificateRequest associée au certificat que vous souhaitez révoquer.
    • REASON : motif de la révocation. Voici les raisons valables : Unspecified, KeyCompromise, CaCompromise, AffiliationChanged, Superseded, CessationOfOperation, CertificateHold, RemoveFromCrl, PrivilegeWithdrawn et AaCompromise.
  2. Appliquez la ressource personnalisée :

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

    Remplacez MANAGEMENT_API_SERVER_KUBECONFIG par le chemin d'accès au fichier kubeconfig du serveur de l'API Management.

  3. Vérifiez que la demande de révocation du certificat est prête :

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

    Remplacez les éléments suivants :

    • MANAGEMENT_API_SERVER_KUBECONFIG : chemin d'accès au fichier kubeconfig du serveur de l'API Management.
    • USER_PROJECT_NAMESPACE : espace de noms du projet.
    • REVOKE_CERT_REQ_NAME : nom de la demande de révocation.

    La sortie ressemble à ceci :

    {
      "lastTransitionTime": "2025-08-19T23:20:22Z",
      "message": "RevokeCertificateRequest reconciled",
      "observedGeneration": 1,
      "reason": "Ready",
      "status": "True",
      "type": "Ready"
    }
    

    Le processus est terminé et le numéro de série du certificat est ajouté à la prochaine LRC générée.

Lister les demandes de certificat révoquées

Répertoriez toutes les ressources RevokeCertificateRequest dans un espace de noms de projet :

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

Remplacez les éléments suivants :

  • MANAGEMENT_API_SERVER_KUBECONFIG : chemin d'accès au fichier kubeconfig du serveur de l'API Management.
  • USER_PROJECT_NAMESPACE : espace de noms du projet.

La sortie ressemble à ceci :

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