Aggiungere una norma di emissione dei certificati a un pool di CA

Questa pagina descrive come aggiungere un criterio di emissione dei certificati a un pool di autorità di certificazione (CA).

Un criterio di emissione dei certificati consente di specificare l'oggetto e i nomi alternativi dell'oggetto (SAN) che possono essere inclusi nei certificati emessi. Puoi specificare il criterio di emissione dei certificati durante la creazione di un pool di CA oppure puoi aggiornare un pool di CA esistente per aggiungere un criterio di emissione.

Per ulteriori informazioni, consulta la Panoramica dei modelli e dei criteri di emissione.

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 su come concedere un ruolo IAM a un principale, consulta Concedere un singolo ruolo.

  • Crea un pool di CA.

Aggiungere un file di criteri di emissione di certificati

Per aggiungere un criterio di emissione dei certificati a un pool di CA esistente, segui questi passaggi:

Console

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

    Vai a Certificate Authority Service

  2. Nella pagina Gestore pool di CA, fai clic sul nome del pool di CA per cui vuoi aggiungere un criterio di emissione dei certificati.

  3. Nella pagina Pool di CA, fai clic su Modifica.

Configura i valori di riferimento

Per configurare i valori di riferimento nei certificati emessi dal pool di CA, svolgi quanto segue:

  1. Fai clic sul pulsante di attivazione/disattivazione.
  2. Fai clic su Configura valori di riferimento.
Definire l'utilizzo di base della chiave

Puoi utilizzare questa impostazione per configurare i modi in cui la chiave contenuta nel certificato può essere utilizzata. Le opzioni per l'utilizzo della chiave includono la crittografia della chiave, la crittografia dei dati, la firma del certificato, la firma della CRL e altro ancora.

Per ulteriori informazioni, vedi Utilizzo delle chiavi.

Per definire gli utilizzi di base della chiave:

  1. (Facoltativo) Nella finestra visualizzata, fai clic sul pulsante di attivazione/disattivazione se vuoi specificare gli utilizzi delle chiavi di base per i certificati.
  2. Seleziona le caselle di controllo per i modi in cui vuoi che venga utilizzata una chiave.
  3. Seleziona i modi generali in cui vuoi che venga utilizzata una chiave.
  4. Fai clic su Avanti.
Definire l'utilizzo esteso della chiave

Puoi utilizzare questa impostazione per selezionare scenari più granulari per i quali è possibile utilizzare la chiave contenuta nel certificato. Le opzioni includono autenticazione del server, autenticazione del client, firma del codice, protezione email e altro ancora.

Gli utilizzi estesi della chiave vengono definiti utilizzando gli identificatori di oggetti (OID). Se non configurerai gli utilizzi estesi della chiave, saranno consentiti tutti gli scenari di utilizzo della chiave.

Per ulteriori informazioni, vedi Uso esteso delle chiavi.

Per definire gli utilizzi avanzati della chiave:

  1. (Facoltativo) Per specificare gli utilizzi estesi della chiave per i certificati emessi dal pool di CA, fai clic sul pulsante di attivazione/disattivazione.
  2. Seleziona le caselle di controllo per gli scenari di utilizzo esteso della chiave.
  3. Fai clic su Avanti.
Definire gli identificatori delle norme

L'estensione dei criteri del certificato nel certificato esprime i criteri followed dal pool di CA emittente. Questa estensione può includere informazioni su come vengono convalidate le identità prima dell'emissione dei certificati, su come vengono revocati i certificati e su come viene garantita l'integrità del pool di CA. Questa estensione ti aiuta a verificare i certificati emessi dal pool di CA e a vedere come vengono utilizzati.

Per ulteriori informazioni, consulta le norme relative ai certificati.

Per specificare il criterio che definisce l'utilizzo del certificato, procedi nel seguente modo:

  1. (Facoltativo) Aggiungi l'identificatore delle norme nel campo Identificatori norme.
  2. Fai clic su Avanti.
Aggiungi i server OCSP per l'accesso alle informazioni sull'autorità (AIA)

L'estensione AIA in un certificato fornisce le seguenti informazioni:

  • Indirizzo dei server OCSP da cui puoi controllare lo stato di revoca del certificato.
  • Il metodo di accesso per l'emittente del certificato.

Per ulteriori informazioni, vedi Accesso alle informazioni sulle autorità.

Per aggiungere i server OCSP visualizzati nel campo dell'estensione AIA nei certificati: La procedura che segue è facoltativa.

  1. (Facoltativo) Fai clic su Aggiungi elemento.
  2. Nel campo Server URL (URL server), aggiungi l'URL del server OCSP.
  3. Fai clic su Fine.
  4. Fai clic su Avanti.
Configurare estensioni aggiuntive

Per configurare estensioni personalizzate aggiuntive da includere nei certificati emessi dal pool di CA, procedi nel seguente modo. La procedura che segue è facoltativa.

  1. Fai clic su Aggiungi elemento.
  2. Nel campo Identificatore dell'oggetto, aggiungi un identificatore dell'oggetto valido, formato come cifre separate da punti.
  3. Nel campo Value (Valore), aggiungi il valore con codifica base64 per l'identificatore.
  4. Se l'estensione è fondamentale, seleziona L'estensione è fondamentale.

Per salvare tutte le configurazioni dei valori di riferimento, fai clic su Fine.

Configurare i vincoli delle estensioni

Per impedire l'inclusione di tutte le estensioni delle richieste di certificato nei certificati emessi, fai clic sul pulsante di attivazione/disattivazione.

Dopo aver fatto clic sul pulsante di attivazione/disattivazione, viene visualizzato il campo Estensioni dei certificati, che puoi utilizzare per selezionare le estensioni dei certificati. Per selezionare le estensioni del certificato:

  1. (Facoltativo) Fai clic sul campo Estensioni di certificati note e cancella le estensioni non richieste dal menu.
  2. (Facoltativo) Nel campo Estensioni personalizzate, aggiungi gli identificatori di oggetti per le estensioni che vuoi includere nei certificati emessi dal pool di CA.
Configurare i vincoli di identità

Per configurare i vincoli sull'oggetto e sui SAN nei certificati emessi dal pool di CA, procedi nel seguente modo:

  1. (Facoltativo) Per impedire il trasferimento dell'oggetto nelle richieste di certificato, fai clic sul pulsante di attivazione/disattivazione.
  2. (Facoltativo) Per impedire il trasferimento dei nomi alternativi degli oggetti nelle richieste di certificato, fai clic sul pulsante di attivazione/disattivazione.
  3. (Facoltativo) Aggiungi un'espressione Common Expression Language (CEL) per applicare limitazioni agli oggetti dei certificati. Per ulteriori informazioni, consulta Utilizzare CEL.
  4. Fai clic su Avanti.

Per scoprire come configurare parametri aggiuntivi nel criterio di emissione dei certificati, consulta IssuancePolicy.

gcloud

Per utilizzare Google Cloud CLI per aggiungere un criterio di emissione dei certificati a un pool di CA, devi creare un file YAML che descriva le limitazioni relative ai certificati che il pool di CA può emettere. I contenuti corrispondono a un IssuancePolicy.

  1. Utilizzando l'editor di Cloud Shell, crea un file policy.yaml con il seguente contenuto:

    identityConstraints:
      allowSubjectPassthrough: true
      allowSubjectAltNamesPassthrough: true
    

    Dove:

    • Il campo allowSubjectPassthrough è obbligatorio. Se il campo allowSubjectPassthrough è impostato su true, il campo dell'oggetto viene copiato da una richiesta di certificato nel certificato firmato. In caso contrario, il soggetto richiesto viene ignorato.
    • Se il campo allowSubjectAltNamesPassthrough è impostato su true, l'estensione SubjectAltNames viene copiata da una richiesta di certificato nel certificato firmato. In caso contrario, i valori SubjectAltNames richiesti vengono ignorati.
  2. Per aggiornare il criterio di emissione dei certificati di un pool CA utilizzando il file creato nel passaggio precedente, esegui il seguente comando:

    gcloud privateca pools update POOL_NAME \
      --issuance-policy FILE_PATH
    

    Sostituisci quanto segue:

    • POOL_NAME: il nome del pool di CA.
    • FILE_PATH: il percorso del file policy.yaml.

    Per ulteriori informazioni sul comando gcloud privateca pools update, consulta gcloud privateca pools update.

Restrizioni supportate

Il servizio CA supporta le seguenti limitazioni delle norme di emissione. Puoi combinare le seguenti limitazioni in base alle tue esigenze per creare un criterio di emissione dei certificati personalizzato.

Limitare o forzare i valori X.509 consentiti

Un pool di CA può limitare i valori X.509 consentiti nelle richieste di certificato configurando il campo passthrough_extensions.

Un pool di CA può anche specificare esplicitamente i valori X.509 da aggiungere a tutti i certificati emessi, sovrascrivendo eventuali valori richiesti, utilizzando il campo baseline_values.

I valori baseline_values di un pool di CA consentono di specificare le seguenti proprietà:

Puoi anche utilizzare queste opzioni insieme.

Se aggiorni una parte del campo baseline_values, l'aggiornamento sostituisce l'intero insieme di valori nel campo baseline_values.

  • Esempio: limita una CA a emettere solo certificati dell'entità finale con valori X.509 per TLS reciproco (mTLS).

    policy.yaml

    baselineValues:
      caOptions:
        isCa: false
      keyUsage:
        baseKeyUsage:
          digitalSignature: true
          keyEncipherment: true
        extendedKeyUsage:
           clientAuth: true
           serverAuth: true
    
  • Esempio: limita una CA a emettere solo certificati di firma del codice delle entità finali con un URL OCSP AIA di riferimento.

    policy.yaml

    baselineValues:
      caOptions:
        isCa: false
      keyUsage:
        baseKeyUsage:
          digitalSignature: true
        extendedKeyUsage:
          codeSigning: true
      aiaOcspServers:
        - "http://foo.bar/revocation"
      additionalExtensions:
      - objectId:
          objectIdPath:
            - 1
            - 2
            - 3
        critical: false
        value: "base64 encoded extension value"
    

Per ulteriori informazioni sul profilo del certificato per mTLS dell'entità finale, consulta mTLS dell'entità finale.

Limitare i campi di identità consentiti

Per limitare l'identità dei certificati emessi tramite un pool di CA, puoi aggiungere un'espressione Common Expression Language (CEL) al campo identity_constraints del criterio di emissione. Le espressioni CEL consentono limitazioni arbitrarie sul nome di dominio dell'oggetto (incluso il nome comune) e sui SAN di un certificato.

Per ulteriori informazioni sull'utilizzo di un'espressione CEL per limitare Subject e SAN, consulta Utilizzare CEL.

  • Esempio Consenti alla CA di emettere solo certificati corrispondenti a un soggetto specificato.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: true
      allowSubjectAltNamesPassthrough: false
      celExpression:
        expression: 'subject.organization == "Example LLC" && subject.country_code in ["US", "UK"]'
    

    Il campo celExpression è facoltativo. Utilizza un'espressione Common Expression Language (CEL) per convalidare l'oggetto e il SAN X.509 risolti prima della firma di un certificato. Per ulteriori informazioni sull'utilizzo delle espressioni CEL, consulta Utilizzare CEL.

  • Esempio: consenti solo i certificati SAN con nomi DNS come us.google.org o che terminano con .google.com.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == DNS && (san.value == "us.google.org" || san.value.endsWith(".google.com")) )'
    
  • Esempio: consenti solo i SAN con URI https://google.com/webhp o che iniziano con spiffe://example-trust-domain-1/ns/namespace1/sa/.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == URI && (san.value == "https://google.com/webhp" || san.value.startsWith("spiffe://example-trust-domain-1/ns/namespace1/sa/")) )'
    
  • Esempio: consenti solo i SAN con indirizzi email example@google.com o che terminano con @google.org.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == EMAIL && (san.value == "example@google.com" || san.value.endsWith("@google.org")) )'
    
  • Esempio: consenti solo SAN personalizzati con un OID e un valore personalizzato specifici.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == CUSTOM && san.oid == [1, 2, 3, 4] && san.value == "custom-data" )'
    

Limita la durata massima dei certificati emessi

Per limitare la durata dei certificati emessi, utilizza il campo maximum_lifetime. Se la durata richiesta di un certificato è superiore alla durata massima, la durata del certificato viene troncata esplicitamente.

Esempio

Per consentire una durata massima di 30 giorni, utilizza il seguente file policy.yaml:

policy.yaml

maximumLifetime: 2592000s

Limita le modalità di emissione dei certificati consentite

Puoi richiedere un certificato tramite una richiesta di firma del certificato (CSR) o una descrizione in linea dei valori richiesti. Alcune organizzazioni potrebbero preferire aggiungere limitazioni all'opzione che può essere utilizzata perché quest'ultimo metodo non richiede una prova di possesso della chiave privata associata. Puoi impostare queste limitazioni utilizzando il campo allowedIssuanceModes.

Per ulteriori informazioni su come specificare i modi in cui i certificati possono essere richiesti da un pool di CA, consulta IssuanceModes.

Per ulteriori informazioni sulla richiesta di certificati, consulta Creare una richiesta di certificato.

  • Esempio: consenti solo l'emissione di CSR.

policy.yaml

allowedIssuanceModes:
  allowCsrBasedIssuance: True
  allowConfigBasedIssuance: False

Limitare gli algoritmi delle chiavi pubbliche della richiesta di certificato

Per limitare la lunghezza minima della chiave e gli algoritmi di chiave pubblica che possono essere utilizzati dai certificati, puoi utilizzare il campo allowedKeyTypes nel file YAML dei criteri di emissione dei certificati. Se questo campo è specificato, la chiave pubblica della richiesta di certificato deve corrispondere a uno dei tipi di chiavi elencati nel file YAML. Se questo campo non è specificato, puoi utilizzare qualsiasi chiave, con l'eccezione delle chiavi RSA di cui le dimensioni del modulo sono inferiori a 2048 bit. Se vuoi utilizzare una chiave RSA con un modulo di dimensioni inferiori a 2048 bit, devi autorizzarla esplicitamente utilizzando i criteri di emissione dei certificati.

Esempio: consenti chiavi RSA con una dimensione del modulo compresa tra 3072 e 4096 bit (inclusi) o chiavi ECDSA (Elliptic Curve Digital Signature Algorithm) sulla curva NIST P-256.

policy.yaml

allowedKeyTypes:
- rsa:
    minModulusSize: 3072
    maxModulusSize: 4096
- ellipticCurve:
    signatureAlgorithm: ECDSA_P256

Puoi scegliere uno dei seguenti algoritmi di firma con curve ellittiche:

  • EC_SIGNATURE_ALGORITHM_UNSPECIFIED: è possibile utilizzare qualsiasi algoritmo di firma.
  • ECDSA_P256 - Firma digitale con curva ellittica sulla curva NIST P-256.
  • ECDSA_P384 - Firma digitale con curva ellittica sulla curva NIST P-384.
  • EDDSA_25519 - Algoritmo di firma digitale con curva di Edwards sulla curva 25519, come descritto in RFC 8410.

Passaggi successivi