Crea una CA subordinata da una CA esterna

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

Se disponi già di una gerarchia di infrastruttura a chiave pubblica (PKI) contenente CA radice e CA subordinate, puoi mantenere la stessa CA radice e creare una CA subordinata nel servizio CA che si concatena CA radice. La chiave e le operazioni della CA radice esterna rimangono al di fuori di Google Cloud. Puoi utilizzare solo la CA radice esterna per emettere il certificato CA subordinato a Google Cloud. La CA subordinata viene immediatamente considerata attendibile da qualsiasi carico di lavoro che considera attendibile la CA radice esterna. Puoi quindi utilizzare la CA subordinata per emettere senza dover raggiungere la CA radice esterna in fase di esecuzione.

Prima di iniziare

  • Assicurati di avere il CA Service Operation Manager (roles/privateca.caManager) o l'amministratore del servizio CA (roles/privateca.admin) Ruolo IAM. Per informazioni, vedi Configura i criteri 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, vedi Determinazione delle impostazioni CA.

Crea 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 CA subordinata (CSR): la prima devi generare un CSR per l'autorità di certificazione subordinata e quindi scaricare il CSR.

  2. Ottieni il certificato CA subordinato firmato dalla CA radice esterna: il secondo consiste nell'inviare il CSR alla CA radice esterna per la firma. Assicurati di segui le istruzioni specifiche dell'autorità di certificazione principale esterna per inviare i CSR e ottenere i certificati firmati.

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

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

Crea un CSR

Console

  1. Visita la sezione Sicurezza > Certificate Authority Service in nella console Google Cloud.

    Vai a Certificate Authority Service

  2. Fai clic sulla scheda CA Manager (Amministratore CA).

  3. Fai clic su Crea CA.

Seleziona il tipo di CA:

  1. Fai clic su CA subordinata.
  2. Nel campo Valido per, inserisci il periodo di tempo che preferisci. validi i certificati emessi dal certificato CA.
  3. Fai clic su La CA radice è esterna.
  4. Seleziona una delle opzioni disponibili per il livello CA. Per maggiori informazioni per le informazioni, consulta Selezionare i livelli delle operazioni.
  5. In Regionalizzazione, seleziona una località in California dalla dall'elenco di lettura.
  6. Fai clic su Avanti.
Configurare il nome oggetto della CA
  1. Nel campo Organizzazione (O), inserisci il nome della tua azienda.
  2. (Facoltativo) Nel campo Unità organizzativa (UO), inserisci l'azienda una suddivisione o un'unità aziendale.
  3. (Facoltativo) Nel campo Nome paese, inserisci un codice paese di due lettere.
  4. (Facoltativo) Nel campo Nome stato o provincia, inserisci il nome stato.
  5. (Facoltativo) Nel campo Nome località, inserisci il nome della tua città.
  6. Nel campo Nome comune della CA (CN), inserisci il nome della CA.
  7. Nel campo ID pool, inserisci il nome del pool di CA. Non puoi modificare Pool di CA dopo la creazione della CA.
  8. Fai clic su Avanti.
Configurare le dimensioni e l'algoritmo della chiave CA
  1. Scegli l'algoritmo chiave più adatto alle tue esigenze. Per informazioni su come decidere l'algoritmo chiave adatto, consulta Scegli un algoritmo chiave.
  2. Fai clic su Avanti.
Configura gli artefatti CA

I passaggi che seguono sono facoltativi. Se salti questi passaggi, lo stato predefinito impostazioni.

  1. Scegli se utilizzare un sistema gestito da Google o uno autogestito nel bucket Cloud Storage.
  2. Se non selezioni un bucket Cloud Storage autogestito, CA Service crea un bucket gestito da Google nello stesso località dell'autorità di certificazione come CA.

  3. Scegli se disattivare la pubblicazione del certificato elenchi di revoche (CRL) e certificati CA a Cloud Storage di sincronizzare la directory di una VM con un bucket.
  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 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 e etichetta la chiave e il valore come indicato nei passaggi 2 e 3.
  5. Fai clic su Avanti.
Controlla le impostazioni

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

Scarica il 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 il CSR dell'autorità di certificazione.

gcloud

  1. Per creare un pool di CA per la CA subordinata, esegui questo comando. Per saperne di più, consulta 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 subordinata nel pool di CA creato, esegui questo comando gcloud. Il comando gcloud crea anche una richiesta di firma del certificato e la salva in un 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 prende l'algoritmo crittografico che vuoi utilizzare per creare una chiave Cloud HSM gestita per la CA.

    Il flag --subject prende il nome X.501 del soggetto del certificato.

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

Al momento della creazione della richiesta di firma del certificato 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 questo comando:

gcloud privateca subordinates create --help

Se perdi il file CSR, puoi scaricarlo 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 subordinata nel 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 il CSR

Passa il file CSR generato al membro della tua organizzazione responsabile del rilascio del certificato e di richiederne la firma. Lo specifico dipendono dalla configurazione della tua organizzazione.

Puoi sperimentare con una semplice CA radice utilizzando 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 che devono essere aggiunte al nuovo certificato CA subordinato.

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

Firma la richiesta di firma del certificato 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 in la console Google Cloud.

    Vai a Certificate Authority Service

  2. Fai clic sulla scheda CA Manager (Amministratore 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 \
  --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 accetta il file contenente l'elenco di 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 localmente come subordinate.crt.
  2. Salva i certificati CA del firmatario localmente come rootCA.crt.
  3. Rimuovi la configurazione per il recupero di CSR menzionata nel primo passaggio come cerca di recuperare il CSR che non è consentito 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 di emittenti include più di una CA, specifica il valore come [file("intermediateCA.cert"), file("rootCA.crt")].

Passaggi successivi