Creare una CA subordinata da una CA esterna

Questa pagina descrive come creare un'autorità di certificazione (CA) subordinata che si concatena a una CA radice esterna.

Se hai una gerarchia di infrastruttura a chiave pubblica (PKI) esistente contenente una CA radice e CA subordinate, puoi mantenere la stessa CA radice e creare una CA subordinata in Certificate Authority Service che si concatena alla tua CA radice esterna. La chiave e le operazioni della CA radice esterna rimangono al di fuori di Google Cloud. Puoi utilizzare la CA radice esterna solo per emettere il certificato CA subordinata a Google Cloud. La CA subordinata è immediatamente attendibile da qualsiasi carico di lavoro che si fida della CA radice esterna. Puoi quindi utilizzare la CA subordinata per emettere certificati senza dover tornare alla CA radice esterna in fase di runtime.

Prima di iniziare

  • Assicurati di avere il ruolo IAM di responsabile operativo servizio CA (roles/privateca.caManager) o di amministratore di servizio CA (roles/privateca.admin). Per informazioni, consulta Configurare le policy IAM.
  • Identifica la CA radice esterna.
  • Definisci il nome, l'oggetto, il periodo di validità e le dimensioni della chiave per la CA subordinata. Per informazioni, consulta Determinare le impostazioni della CA.

Creare una CA subordinata da una CA esterna

La creazione di una CA subordinata da una CA esterna prevede i seguenti passaggi:

  1. Genera la richiesta di firma del certificato (CSR) della CA subordinata: il primo passaggio consiste nel generare una CSR per la CA subordinata e poi scaricarla.

  2. Fai firmare il certificato CA subordinata dalla CA radice esterna: il secondo passaggio consiste nell'inviare la CSR alla CA radice esterna per la firma. Assicurati di seguire le istruzioni specifiche della CA radice esterna per l'invio delle CSR e l'ottenimento dei certificati firmati.

  3. Importa il certificato CA subordinata firmato in Certificate Authority Service: l'ultimo passaggio consiste nel caricare la catena di certificati PEM firmata utilizzando Google Cloud CLI o la Google Cloud console.

La sezione seguente mostra come creare una CA subordinata da una CA radice esterna.

Creare una CSR

Console

  1. Nella Google Cloud console, vai alla pagina Certificate Authority Service.

    Vai a Certificate Authority Service

  2. Fai clic sulla scheda Gestore CA.

  3. Fai clic su Crea CA.

Seleziona il tipo di CA:

  1. Fai clic su CA subordinata.
  2. Nel campo Valido per, inserisci la durata di validità dei certificati emessi dalla CA subordinata.
  3. Fai clic su La CA radice è esterna.
  4. Seleziona una delle opzioni disponibili per il livello della CA. Per saperne di più, consulta Selezionare i livelli operativi.
  5. In Regionalizzazione, seleziona una località CA dall'elenco.
  6. Fai clic su Avanti.
Configura il nome oggetto della CA
  1. Nel campo Organizzazione (O), inserisci il nome della tua azienda.
  2. (Facoltativo) Nel campo Unità organizzativa (UO), inserisci la suddivisione aziendale o l'unità aziendale.
  3. (Facoltativo) Nel campo Nome paese (C), inserisci un codice paese di due lettere.
  4. (Facoltativo) Nel campo Nome stato o provincia, inserisci il nome del tuo stato.
  5. (Facoltativo) Nel campo Nome località, inserisci il nome della tua città.
  6. Nel campo Nome comune CA (NC), inserisci il nome della CA.
  7. Fai clic su Continua.
Configura dimensioni e algoritmo della chiave CA
  1. Scegli l'algoritmo della chiave più adatto alle tue esigenze. Per maggiori dettagli sulle opzioni della chiave di firma, consulta Configurare le chiavi di firma della CA.
  2. Per utilizzare una chiave di firma gestita dal cliente, seleziona Chiave gestita dal cliente e fornisci la versione della chiave di crittografia Cloud Key Management Service.
  3. Fai clic su Continua.
Configura artefatti CA
  1. Scegli se utilizzare un bucket Cloud Storage gestito da Google o gestito dal cliente.
    1. Per un bucket Cloud Storage gestito da Google, Certificate Authority Service crea un bucket gestito da Google nella stessa località della CA.
    2. Per un bucket Cloud Storage gestito dal cliente, fai clic su Sfoglia e seleziona uno dei bucket Cloud Storage esistenti.
  2. Fai clic su Continua.
Aggiungi etichette

I seguenti passaggi sono facoltativi.

Se vuoi aggiungere etichette alla CA:

  1. Fai clic su Aggiungi elemento.
  2. Nel campo Chiave 1, inserisci la chiave di etichetta.
  3. Nel campo Valore 1, inserisci il valore dell'etichetta.
  4. Se vuoi aggiungere un'altra etichetta, fai clic su Aggiungi elemento. Quindi, aggiungi la chiave di etichetta e il valore come indicato nei passaggi 2 e 3.
  5. Fai clic su Continua.
Rivedi le impostazioni

Esamina attentamente tutte le impostazioni, quindi fai clic su Fine per creare la CA.

Scarica la CSR

  1. Nella pagina Autorità di certificazione, seleziona la CA che vuoi attivare.
  2. Fai clic su Attiva.
  3. Nella finestra di dialogo che si apre, fai clic su Scarica CSR.

    Scarica la CSR della CA.

gcloud

  1. Per creare un pool di CA per la CA subordinata, esegui il comando seguente. Per saperne di più, consulta Creare un pool di CA.

    gcloud privateca pools create SUBORDINATE_POOL_ID --location=LOCATION
    

    Sostituisci quanto segue:

    • SUBORDINATE_POOL_ID: il nome del pool di CA.
    • LOCATION: la località del pool di CA.
  2. Per creare una CA subordinata nel pool di CA creato, esegui il seguente comando gcloud. Il comando gcloud crea anche una CSR e la salva nel file FILE_NAME.

      gcloud privateca subordinates create SUBORDINATE_CA_ID \
          --pool=SUBORDINATE_POOL_ID \
          --location=LOCATION \
          --create-csr --csr-output-file=FILE_NAME \
          --key-algorithm="ec-p256-sha256" \
          --subject="CN=Example Server TLS CA, O=Example LLC"
    

    Sostituisci quanto segue:

    • SUBORDINATE_CA_ID: l'identificatore univoco della CA subordinata.
    • SUBORDINATE_POOL_ID: il nome del pool di CA.
    • LOCATION: la località del pool di CA.
    • FILE_NAME: il nome del file in cui viene scritta la CSR con codifica PEM.

    Il flag --key-algorithm specifica l'algoritmo di crittografia che vuoi utilizzare per creare una chiave Cloud HSM gestita per la CA.

    Il flag --subject specifica il nome X.501 dell'oggetto del certificato.

    Per saperne di più sul gcloud privateca subordinates create comando, consulta gcloud privateca subordinates create.

    Per creare una CA subordinata utilizzando una chiave di firma gestita dal cliente, esegui il comando seguente:

      gcloud privateca subordinates create SUBORDINATE_CA_ID \
          --pool=SUBORDINATE_POOL_ID \
          --location=LOCATION \
          --create-csr --csr-output-file=FILE_NAME \
          --kms-key-version=KMS_KEY_VERSION \
          --subject="CN=Example Server TLS CA, O=Example LLC"
    

    Sostituisci quanto segue:

    • SUBORDINATE_CA_ID: l'identificatore univoco della CA subordinata.
    • SUBORDINATE_POOL_ID: il nome del pool di CA.
    • LOCATION: la località del pool di CA.
    • FILE_NAME: il nome del file in cui viene scritta la CSR con codifica PEM.
    • KMS_KEY_VERSION: l'ID risorsa completo di una versione della chiave di crittografia Cloud KMS gestita dal cliente da utilizzare come chiave di firma.

    Per maggiori dettagli sulle opzioni della chiave di firma e sulla preparazione di una chiave di firma gestita dal cliente, consulta Configurare le chiavi di firma della CA.

Viene restituita la seguente istruzione quando viene creata la CSR:

Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID] and saved CSR to FILE_NAME.

Per visualizzare l'elenco completo delle impostazioni disponibili, esegui il comando seguente:

gcloud privateca subordinates create --help

Se perdi la CSR, puoi scaricarla di nuovo utilizzando il comando seguente:

gcloud privateca subordinates get-csr SUBORDINATE_CA_ID \
    --pool=SUBORDINATE_POOL_ID \
    --location=LOCATION

Terraform

  1. Per creare un pool di CA e una CA subordinata in quel pool di CA, utilizza il seguente file di configurazione:

    resource "google_privateca_ca_pool" "default" {
      name     = "test-ca-pool"
      location = "us-central1"
      tier     = "ENTERPRISE"
    }
    
    resource "google_privateca_certificate_authority" "sub-ca" {
      pool = google_privateca_ca_pool.default.name
      certificate_authority_id = "my-certificate-authority-sub"
      location = "us-central1"
      config {
        subject_config {
          subject {
            organization = "HashiCorp"
            common_name = "my-subordinate-authority"
          }
          subject_alt_name {
            dns_names = ["hashicorp.com"]
          }
        }
        x509_config {
          ca_options {
            is_ca = true
            # Force the sub CA to only issue leaf certs
            max_issuer_path_length = 0
          }
          key_usage {
            base_key_usage {
              cert_sign = true
              crl_sign = true
            }
            extended_key_usage {
            }
         }
       }
      }
      lifetime = "86400s"
      key_spec {
        algorithm = "RSA_PKCS1_4096_SHA256"
      }
      type = "SUBORDINATE"
    }
    
  2. Per recuperare la CSR, aggiungi la seguente configurazione.

    data "google_privateca_certificate_authority" "sub-ca-csr" {
      location = "us-central1"
      pool = google_privateca_ca_pool.default.name
      certificate_authority_id = google_privateca_certificate_authority.sub-ca.certificate_authority_id
    }
    
    output "csr" {
      value = data.google_privateca_certificate_authority.sub-ca-csr.pem_csr
    }
    
  3. Esegui terraform apply.

Firmare la CSR

Passa il file CSR generato al membro della tua organizzazione responsabile dell'emissione dei certificati e chiedi di firmarlo. I passaggi specifici dipendono dalla configurazione della tua organizzazione.

Puoi sperimentare con una CA radice semplice utilizzando i seguenti comandi openssl:

Shell

Configura le impostazioni per la nuova CA radice.

cat > root.conf <<- EOM
[ req ]
distinguished_name = req_distinguished_name
x509_extensions    = v3_ca
prompt             = no
[ req_distinguished_name ]
commonName = Sample Root
[ v3_ca ]
subjectKeyIdentifier=hash
basicConstraints=critical, CA:true
EOM

Crea la nuova CA radice.

openssl req -x509 -new -nodes -config root.conf -keyout rootCA.key \
  -days 3000 -out rootCA.crt -batch

Configura le estensioni da aggiungere al nuovo certificato CA subordinata.

cat > extensions.conf <<- EOM
basicConstraints=critical,CA:TRUE,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
extendedKeyUsage=critical,serverAuth
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOM

Firma la CSR della CA subordinata con questa radice.

openssl x509 -req -in FILE_NAME -CA rootCA.crt -CAkey rootCA.key \
  -CAcreateserial -out subordinate.crt -days 1095 -sha256 -extfile extensions.conf

Concatena l'intera catena di certificati in un unico file.

cat subordinate.crt > chain.crt
cat rootCA.crt >> chain.crt

Caricare il certificato firmato

Per attivare una CA subordinata utilizzando un certificato firmato:

Console

  1. Vai alla pagina Certificate Authority Service nella Google Cloud console.

    Vai a Certificate Authority Service

  2. Fai clic sulla scheda Gestore CA.

  3. In Autorità di certificazione, scegli la CA subordinata che hai creato.

  4. Fai clic su Attiva.

  5. Nella finestra di dialogo che si apre, fai clic su Scarica CSR per scaricare il file CSR con codifica PEM che la CA emittente può firmare.

  6. Fai clic su Avanti.

  7. Nel campo Carica catena di certificati, fai clic su Sfoglia.

  8. Carica il file del certificato firmato con estensione .crt.

  9. Fai clic su Attiva.

gcloud

gcloud privateca subordinates activate SUBORDINATE_CA_ID \
    --pool=SUBORDINATE_POOL_ID \
    --location=LOCATION \
    --pem-chain ./chain.crt

Sostituisci quanto segue:

  • SUBORDINATE_CA_ID: l'identificatore univoco della CA subordinata che vuoi attivare.
  • SUBORDINATE_POOL_ID: il nome del pool di CA che contiene la CA subordinata.
  • LOCATION: la località del pool di CA. Per l'elenco completo delle località, consulta Località.

Il flag --pem-chain è obbligatorio. Questo flag specifica un file che contiene l'elenco dei certificati con codifica PEM. L'elenco dei certificati inizia con il certificato CA corrente e termina con il certificato CA radice.

Per saperne di più sul comando gcloud privateca subordinates activate, consulta gcloud privateca subordinates activate.

Viene restituita la seguente istruzione quando viene caricato il certificato firmato:

Activated certificate authority [SUBORDINATE_CA_ID].

Terraform

  1. Salva localmente il certificato CA firmato come subordinate.crt.
  2. Salva localmente i certificati CA del firmatario come rootCA.crt.
  3. Rimuovi la configurazione per il recupero della CSR menzionata nel primo passaggio, poiché tenta di recuperare la CSR, operazione non consentita dopo l'attivazione della CA.
  4. Aggiorna la configurazione della CA subordinata con i seguenti campi ed esegui terraform apply.

    pem_ca_certificate     = file("subordinate.crt")
    subordinate_config {
      pem_issuer_chain {
          pem_certificates = [file("rootCA.crt")]
      }
    }
    

Se la catena dell'emittente include più di una CA, specifica il valore come [file("intermediateCA.cert"), file("rootCA.crt")].

Passaggi successivi