Crea un'autorità di certificazione radice

Questa pagina descrive i passaggi per creare un'autorità di certificazione (CA) principale in Google Distributed Cloud (GDC) air-gapped.

Un'autorità di certificazione radice, che si trova in cima alla gerarchia dell'infrastruttura a chiave pubblica (PKI), stabilisce l'ancora di attendibilità per la PKI. Per utilizzare i certificati all'interno di una PKI, i dispositivi, il software e i componenti devono considerare attendibile la CA radice. Questa configurazione garantisce l'attendibilità di tutti i certificati emessi dalla CA radice, consentendo quindi l'attendibilità dell'infrastruttura PKI stessa.

Prima di iniziare

Per ottenere le autorizzazioni necessarie per creare un'autorità di certificazione radice, chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Amministratore del servizio di certificazione (certificate-authority-service-admin). Per ulteriori informazioni sui ruoli, consulta Definizioni dei ruoli.

Recupera il file kubeconfig

Per eseguire comandi sul server API Management, assicurati di disporre delle seguenti risorse:

  1. Accedi e genera il file kubeconfig per il server API Management se non ne hai uno.

  2. Utilizza il percorso del file kubeconfig del server API di gestione per sostituire MANAGEMENT_API_SERVER_KUBECONFIG in queste istruzioni.

Crea un'autorità di certificazione radice

Per creare una CA radice, applica una risorsa personalizzata all'istanza Distributed Cloud air-gapped.

  1. Crea una risorsa CertificateAuthority e salvala come file YAML denominato root-ca.yaml:

    apiVersion: pki.security.gdc.goog/v1
    kind: CertificateAuthority
    metadata:
      name: ROOT_CA_NAME
      namespace: USER_PROJECT_NAMESPACE
    spec:
      caProfile:
        commonName: COMMON_NAME
        duration: DURATION
        renewBefore: RENEW_BEFORE
        organizations:
        - ORGANIZATION
        organizationalUnits:
        - ORGANIZATIONAL_UNITS
        countries:
        - COUNTRIES
        localities:
        - LOCALTIES
        provinces:
        - PROVINCES
        streetAddresses:
        - STREET_ADDRESSES
        postalCodes:
        - POSTAL_CODES
      caCertificate:
        selfSignedCA: {}
      certificateProfile:
        keyUsage:
          - digitalSignature
          - keyCertSign
          - crlSign
        extendedKeyUsage:
          - EXTENDED_KEY_USAGE
      secretConfig:
        secretName: SECRET_NAME
        privateKeyConfig:
          algorithm: KEY_ALGORITHM
          size: KEY_SIZE
      acme:
        enabled: ACME_ENABLED
    

    Sostituisci le seguenti variabili:

    Variabile Descrizione
    ROOT_CA_NAME Il nome della CA radice.
    USER_PROJECT_NAMESPACE Il nome dello spazio dei nomi in cui si trova il progetto utente.
    COMMON_NAME Il nome comune del certificato CA.
    DURATION La durata richiesta del certificato CA.
    SECRET_NAME Il nome del secret Kubernetes che contiene la chiave privata e il certificato CA firmato.

    Le seguenti variabili sono valori facoltativi:

    Variabile Descrizione
    RENEW_BEFORE Il tempo di rotazione prima della scadenza del certificato CA.
    ORGANIZATION L'organizzazione da utilizzare nel certificato.
    ORGANIZATIONAL_UNITS Unità organizzative da utilizzare nel certificato.
    COUNTRIES Paesi da utilizzare nel certificato.
    LOCALITIES Città da utilizzare nel certificato.
    PROVINCES Stati o province da utilizzare nel certificato.
    STREET_ADDRESSES Indirizzi da utilizzare sul certificato.
    POSTAL_CODES I codici postali da utilizzare nel certificato.
    EXTENDED_KEY_USAGE L'utilizzo esteso della chiave per il certificato. Se specificato, i valori consentiti sono serverAuth e clientAuth.
    KEY_ALGORITHYM L'algoritmo della chiave privata utilizzato per questo certificato. I valori consentiti sono RSA, Ed25519 o ECDSA. Se le dimensioni non vengono fornite, il valore predefinito è 256 per ECDSA e 2048 per RSA. La dimensione della chiave viene ignorata per Ed25519.
    KEY_SIZE Le dimensioni, in bit, della chiave privata per questo certificato dipendono dall'algoritmo. RSA consente 2048, 3072, 4096 o 8192 (valore predefinito 2048). ECDSA consente 256, 384 o 521 (256 per impostazione predefinita). Ed25519 ignora le dimensioni.
    ACME_ENABLED Se impostato su true, CA viene eseguito in modalità ACME e restituisce l'URL del server ACME. Puoi quindi utilizzare il client e il protocollo ACME per gestire i certificati.

  2. Applica la risorsa personalizzata all'istanza Distributed Cloud:

    kubectl apply -f root-ca.yaml –kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
    

    Sostituisci MANAGEMENT_API_SERVER_KUBECONFIG con il percorso del file kubeconfig del server API Management.

  3. Verifica la disponibilità della CA radice. In genere, sono necessari circa 40 minuti prima che l'autorità di certificazione sia pronta:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthority.pki.security.gdc.goog/ROOT_CA_NAME -ojson | jq -r ' 
    .status.conditions[] | select( .type as $id | "Ready" | index($id))
    

    L'output è simile al seguente:

    {
      "lastTransitionTime": "2025-01-24T17:09:19Z",
      "message": "CA reconciled",
      "observedGeneration": 2,
      "reason": "Ready",
      "status": "True",
      "type": "Ready"
    }
    

Elenco delle CA

Per elencare tutte le risorse di Certificate Authority Service nella tua istanza Distributed Cloud air-gapped, procedi nel seguente modo:

Utilizza il parametro certificateauthorities per elencare tutte le risorse CertificateAuthority:

   kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthorities

L'output è simile al seguente:

   NAMESPACE    NAME              READY   REASON   AGE
   foo          root-ca           True    Ready    7h24m
   foo          sub-ca            True    Ready    7h24m