Creare una CA subordinata da una CA esterna

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

Se hai già una gerarchia PKI (infrastruttura a chiave pubblica) contenente una CA radice e CA subordinate, puoi mantenere la stessa CA radice e creare una CA subordinata in CA Service che si colleghi 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 della CA subordinata per Google Cloud. L'autorità di certificazione secondaria è immediatamente attendibile per qualsiasi carico di lavoro che si fidi dell'autorità di certificazione radice esterna. Puoi quindi utilizzare la CA subordinata per emettere certificati senza dover accedere di nuovo all'autorità di certificazione principale esterna in fase di esecuzione.

Prima di iniziare

  • Assicurati di disporre del ruolo IAM Responsabile operativo servizio CA (roles/privateca.caManager) o Amministratore servizio CA (roles/privateca.admin). Per informazioni, consulta Configurare i criteri IAM.
  • Identifica la CA radice esterna.
  • Definisci il nome, il soggetto, il periodo di validità e la dimensione della chiave per la CA secondaria. Per informazioni, vedi Determinare le impostazioni CA.

Creare una CA subordinata da una CA esterna

La creazione di una CA subordinata da un'autorità di certificazione 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. Ottieni il certificato CA subordinato firmato dall'autorità di certificazione principale esterna: il secondo passaggio consiste nell'inviare la CSR all'autorità di certificazione principale esterna per la firma. Assicurati di seguire le istruzioni specifiche della CA radice esterna per l'invio delle richieste di certificato e l'ottenimento dei certificati firmati.

  3. Importa il certificato della CA subordinata firmato nel servizio CA: Il passaggio finale consiste nel caricare la catena di certificati PEM firmata utilizzando l&#Google Cloud CLI o la console Google Cloud.

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

Crea una CSR

Console

  1. Vai al menu Sicurezza > Servizio autorità di certificazione nella console Google Cloud.

    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 Valid for (Valido per), inserisci la durata per la quale vuoi che i certificati emessi dal certificato CA siano validi.
  3. Fai clic su La CA principale è esterna.
  4. Scegli una delle opzioni disponibili per il livello della CA. Per ulteriori informazioni, vedi Selezionare i livelli di operazioni.
  5. In Regionalizzazione, seleziona una posizione 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 (OU), inserisci la suddivisione dell'azienda o la business unit.
  3. (Facoltativo) Nel campo Nome paese, 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 (CN), inserisci il nome della CA.
  7. Nel campo ID pool, inserisci il nome del pool di CA. Non puoi modificare il pool di CA dopo aver creato la CA.
  8. Fai clic su Avanti.
Configura dimensioni e algoritmo della chiave CA
  1. Scegli l'algoritmo chiave più adatto alle tue esigenze. Per informazioni su come scegliere l'algoritmo chiave più adatto, consulta Scegliere un algoritmo chiave.
  2. Fai clic su Avanti.
Configurare gli elementi CA

I passaggi che seguono sono facoltativi. Se salti questi passaggi, verranno applicate le impostazioni predefinite.

  1. Scegli se utilizzare un bucket Cloud Storage gestito da Google o autogestito.
  2. Se non selezioni un bucket Cloud Storage autogestito, il servizio CA crea un bucket gestito da Google nella stessa posizione dell'autorità di certificazione.

  3. Scegli se disattivare la pubblicazione degli elenchi di revoche dei certificati (CRL) e dei certificati CA nel bucket Cloud Storage.
  4. La pubblicazione di CRL e certificato CA in un bucket Cloud Storage è abilitata per impostazione predefinita. Per disattivare queste impostazioni, fai clic sui pulsanti di attivazione/disattivazione.

  5. Fai clic su Avanti.
Aggiungere etichette

I passaggi che seguono sono facoltativi.

Se vuoi aggiungere etichette alla CA:

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

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

Scarica il file CSR

  1. Nella pagina Autorità di certificazione, seleziona l'autorità di certificazione che vuoi attivare.
  2. Fai clic su Attiva.
  3. Nella finestra di dialogo visualizzata, fai clic su Scarica CSR.

    Scarica la CSR della CA.

gcloud

  1. Per creare un pool di CA per la CA secondaria, esegui il seguente comando. Per ulteriori informazioni, vedi Creare un pool di CA.

    gcloud privateca pools create SUBORDINATE_POOL_ID
    

    Sostituisci SUBORDINATE_POOL_ID con il nome del pool di CA.

  2. Per creare una CA secondaria nel pool di CA creato, esegui il seguente comando gcloud. Il comando gcloud crea anche un CSR e lo salva nel file FILE_NAME.

    gcloud privateca subordinates create SUBORDINATE_CA_ID \
      --pool=SUBORDINATE_POOL_ID \
      --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.
    • FILE_NAME: il nome del file in cui è scritto il CSR con codifica PEM.

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

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

    Per ulteriori informazioni sul comando gcloud privateca subordinates create, consulta gcloud privateca subordinates create.

Quando viene creato il CSR, viene restituita la seguente dichiarazione:

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 seguente comando:

gcloud privateca subordinates create --help

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

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

Terraform

  1. Per creare un pool di CA e una CA secondaria 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 il 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.

Firma la CSR

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

Puoi fare esperimenti con una semplice CA principale utilizzando i seguenti comandi openssl:

Shell

Configura le impostazioni per la nuova CA principale.

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 secondario.

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

Carica il certificato firmato

Per attivare una CA subordinata utilizzando un certificato firmato:

Console

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

    Vai a Certificate Authority Service

  2. Fai clic sulla scheda Gestore CA.

  3. In Autorità di certificazione, scegli l'autorità di certificazione secondaria che hai creato.

  4. Fai clic su Attiva.

  5. Nella finestra di dialogo visualizzata, 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 la 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 \
  --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.

Il flag --pem-chain è obbligatorio. Questo flag prende il file contenente 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 ulteriori informazioni sul comando gcloud privateca subordinates activate, consulta gcloud privateca subordinates activate.

Quando viene caricato il certificato firmato, viene restituita la seguente dichiarazione:

Activated certificate authority [SUBORDINATE_CA_ID].

Terraform

  1. Salva il certificato CA firmato a livello locale come subordinate.crt.
  2. Salva i certificati CA del firmatario localmente come rootCA.crt.
  3. Rimuovi la configurazione per il recupero della CSR indicata nel primo passaggio, poiché tenta di recuperare la CSR, che non è consentita dopo l'attivazione della CA.
  4. Aggiorna la configurazione della CA secondaria 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