Revocare un certificato

Questo documento descrive come revocare un certificato utilizzando Certificate Authority Service. La revoca di un certificato lo invalida prima della data di scadenza, impedendone l'utilizzo per l'autenticazione. Potresti revocare un certificato se la chiave privata è compromessa, se il certificato viene sostituito da un nuovo certificato o se non è più necessario (ad esempio quando il servizio per cui è stato emesso il certificato viene dismesso).

Questo documento è rivolto ai gruppi di operatori di applicazioni, come sviluppatori di applicazioni o data scientist, che gestiscono i cicli di vita dei certificati all'interno del loro progetto. Per saperne di più, consulta la documentazione sui segmenti di pubblico per GDC con air gap.

Informazioni sulla revoca dei certificati

Certificate Authority Service supporta la revoca dei certificati pubblicando elenchi di revoche di certificati (CRL). Un CRL è un elenco di numeri di serie di certificati che sono stati revocati e non sono più attendibili. Per impostazione predefinita, viene pubblicato un nuovo CRL ogni 15 minuti. Inoltre, ogni revoca di un certificato andata a buon fine attiva automaticamente la generazione di un nuovo CRL.

I certificati emessi da CA Service includono un'estensione denominata punto di distribuzione CRL (CDP). Questa estensione contiene l'URL in cui puoi trovare e scaricare il CRL per quel certificato. Le applicazioni client utilizzano questo URL per recuperare la CRL e verificare se è presente il numero di serie di un certificato. Se il numero di serie appare nell'elenco, il certificato è considerato non valido e la connessione deve essere rifiutata.

Prima di iniziare

Prima di poter revocare un certificato, devi richiedere le autorizzazioni necessarie e preparare l'ambiente.

Richiedi ruoli IAM

Per revocare i certificati e visualizzare le richieste di revoca, contatta l'amministratore dell'organizzazione IAM per richiedere il ruolo CA Service Operation Manager (certificate-authority-service-operation-manager) nello spazio dei nomi del progetto dell'autorità di certificazione.

prepara l'ambiente

Revocare un certificato

Il metodo per revocare un certificato dipende dall'abilitazione o meno della modalità ACME nell'autorità di certificazione (CA) emittente. Dopo aver revocato un certificato, il relativo numero di serie viene visualizzato in tutti i CRL futuri per la CA fino alla scadenza del certificato.

Revoca un certificato da una CA abilitata per ACME

Ogni CA abilitata per ACME espone un URL del server ACME univoco nel suo stato una volta che è pronta. Per revocare un certificato da una CA abilitata per ACME, devi utilizzare uno strumento client ACME per interagire con questo URL utilizzando il protocollo ACME.

Revoca un certificato da una CA abilitata per ACME:

  1. Recupera l'URL del server ACME per la tua CA:

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

    Sostituisci quanto segue:

    • MANAGEMENT_API_SERVER_KUBECONFIG: il percorso del file kubeconfig del server API di gestione.
    • CA_NAME: il nome della CA abilitata per ACME (principale o subordinata).
    • USER_PROJECT_NAMESPACE: lo spazio dei nomi del progetto.
  2. Utilizza l'URL ottenuto con lo strumento client ACME che preferisci per inviare una richiesta di revoca. Per maggiori dettagli, consulta la documentazione del tuo client ACME specifico.

Revoca un certificato da una CA con ACME disattivato

Se la modalità ACME è disattivata sulla CA, revoca un certificato creando e applicando una risorsa personalizzata RevokeCertificateRequest:

  1. Crea un file YAML della risorsa personalizzata RevokeCertificateRequest (ad esempio 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
    

    Sostituisci quanto segue:

    • REVOKE_CERT_REQ_NAME: il nome definito dall'utente per la richiesta di revoca.
    • USER_PROJECT_NAMESPACE: lo spazio dei nomi del progetto.
    • CERT_REQ_NAME: il nome della risorsa CertificateRequest associata al certificato che vuoi revocare.
    • REASON: il motivo della revoca. I motivi validi sono: Unspecified, KeyCompromise, CaCompromise, AffiliationChanged, Superseded, CessationOfOperation, CertificateHold, RemoveFromCrl, PrivilegeWithdrawn e AaCompromise.
  2. Applica la risorsa personalizzata:

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

    Sostituisci MANAGEMENT_API_SERVER_KUBECONFIG con il percorso del file kubeconfig del server API di gestione.

  3. Verifica l'idoneità della richiesta di revoca del certificato:

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

    Sostituisci quanto segue:

    • MANAGEMENT_API_SERVER_KUBECONFIG: il percorso del file kubeconfig del server API di gestione.
    • USER_PROJECT_NAMESPACE: lo spazio dei nomi del progetto.
    • REVOKE_CERT_REQ_NAME: il nome della richiesta di revoca.

    L'output è simile al seguente:

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

    La procedura è completata e il numero di serie del certificato viene aggiunto alla CRL generata successivamente.

Elenca le richieste di certificati revocati

Elenca tutte le risorse RevokeCertificateRequest in uno spazio dei nomi del progetto:

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

Sostituisci quanto segue:

  • MANAGEMENT_API_SERVER_KUBECONFIG: il percorso del file kubeconfig del server API di gestione.
  • USER_PROJECT_NAMESPACE: lo spazio dei nomi del progetto.

L'output è simile al seguente:

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