Configura TLS reciproco con una CA privata

Questa pagina fornisce istruzioni per creare un'autorità di certificazione (CA) privata utilizzando Certificate Authority Service e caricando i certificati in una risorsa TrustConfig di Gestore certificati.

Creerai anche le risorse di sicurezza di rete necessarie per configurare il protocollo TLS reciproco per gli Application Load Balancer.

Prima di iniziare

Autorizzazioni

Per ottenere le autorizzazioni necessarie per completare questa guida, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto:

  • Per creare risorse del bilanciatore del carico, ad esempio TargetHTTPProxy: Amministratore bilanciatore del carico Compute (roles/compute.loadBalancerAdmin)
  • Per utilizzare le risorse di Gestore certificati: Proprietario Gestore certificati (roles/certificatemanager.owner)
  • Per creare componenti di sicurezza e networking: Amministratore rete Compute (roles/compute.networkAdmin) e Amministratore sicurezza Compute (roles/compute.securityAdmin)
  • (Facoltativo) Per creare un progetto: Autore progetto (roles/resourcemanager.projectCreator)

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Crea una CA privata

Crea una CA privata utilizzando il servizio CA, quindi crea un certificato radice:

  1. Per creare un pool di CA, utilizza il comando gcloud privateca pools create:

    gcloud privateca pools create CA_POOL \
       --location=us-central1
    

    Sostituisci CA_POOL con l'ID o il nome del pool di CA padre.

  2. Per creare una CA privata nel pool di CA, utilizza il comando gcloud privateca roots create:

    gcloud privateca roots create CA_ROOT \
       --pool=CA_POOL \
       --subject="CN=my-ca, O=Test LLC" \
       --location=us-central1
    

    Sostituisci quanto segue:

    • CA_ROOT: l'ID o il nome della CA privata
    • CA_POOL: l'ID o il nome del pool di CA padre
  3. Per descrivere la nuova CA e creare il file root.cert, utilizza il comando gcloud privateca roots describe:

    gcloud privateca roots describe CA_ROOT \
       --pool=CA_POOL \
       --location=us-central1 \
       --format='value(pemCaCertificates)' > root.cert
    
    export ROOT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
    

    Sostituisci quanto segue:

    • CA_ROOT: l'ID o il nome della CA privata
    • CA_POOL: l'ID o il nome del pool di CA padre

    Per ulteriori informazioni, consulta le seguenti risorse:

Crea TrustConfig con CA privata

Crea una risorsa TrustConfig del gestore certificati che rappresenti la tua infrastruttura a chiave pubblica, utilizzando il certificato radice generato mediante la CA privata. Presumiamo che la risorsa TrustConfig sia un semplice archivio di attendibilità con un singolo trust anchor che rappresenta un certificato radice.

Nei passaggi seguenti, sostituisci TRUST_CONFIG_NAME con il nome della risorsa TrustConfig.

  • Per creare il file trust_config.yaml, utilizza il comando seguente:

    cat << EOF > trust_config.yaml
    name: TRUST_CONFIG_NAME
    trustStores:
    - trustAnchors:
       - pemCertificate: "${ROOT?}"
    EOF
    
  • Per creare le risorse TrustConfig del gestore certificati, utilizza il comando gcloud certificate-manager trust-configs import:

    gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME  \
       --source=trust_config.yaml \
       --location=REGION
    

    Sostituisci quanto segue:

    REGION: utilizza global per il bilanciatore del carico delle applicazioni interno tra regioni, per l'Application Load Balancer esterno globale o per l'Application Load Balancer classico. Per il bilanciatore del carico delle applicazioni esterno regionale o per l'Application Load Balancer interno regionale, utilizza la regione in cui hai configurato il bilanciatore del carico.

crea le risorse di sicurezza della rete

Un criterio TLS del server (risorsa di sicurezza di rete ServerTLSPolicy) consente di specificare la modalità TLS lato server e la risorsa TrustConfig da utilizzare durante la convalida dei certificati client. Quando il client presenta un certificato non valido o nessun certificato al bilanciatore del carico, clientValidationMode specifica come viene gestita la connessione client.

  • Se clientValidationMode è impostato su ALLOW_INVALID_OR_MISSING_CLIENT_CERT, tutte le richieste vengono passate al backend anche se la convalida non va a buon fine o il certificato client è mancante.
  • Quando clientValidationMode è impostato su REJECT_INVALID, solo le richieste che forniscono un certificato client che può essere convalidato a fronte di una risorsa TrustConfig vengono passate al backend.

Per creare la risorsa ServerTLSPolicy, completa i seguenti passaggi:

  1. A seconda di come vuoi gestire la connessione, seleziona una delle seguenti opzioni.

    Nei passaggi seguenti, sostituisci SERVER_TLS_POLICY_NAME con il nome del criterio TLS del server e PROJECT_ID con l'ID del tuo progetto Google Cloud.

    • Opzione 1: clientValidationMode è impostata su ALLOW_INVALID_OR_MISSING_CLIENT_CERT.

      Per creare il file server_tls_policy.yaml, utilizza il comando seguente:

      globale

      Per bilanciatori del carico delle applicazioni esterni e Application Load Balancer interni tra regioni, utilizza il comando:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
      clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT
      clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME
      EOF
      

      regionale

      Per gli Application Load Balancer esterni regionali e gli Application Load Balancer interni regionali, utilizza il comando:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
      clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT
      clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME
      EOF
      
    • Opzione 2: clientValidationMode è impostata su REJECT_INVALID.

      Per creare il file server_tls_policy.yaml, utilizza il comando seguente:

      globale

      Per bilanciatori del carico delle applicazioni esterni e Application Load Balancer interni tra regioni, utilizza il comando:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
      clientValidationMode: REJECT_INVALID
      clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME
      EOF
      

      regionale

      Per gli Application Load Balancer esterni regionali e gli Application Load Balancer interni regionali, utilizza il comando:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
      clientValidationMode: REJECT_INVALID
      clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME
      EOF
      
  2. Per creare la risorsa ServerTlsPolicy, utilizza il comando gcloud network-security server-tls-policies import:

    globale

    Per bilanciatori del carico delle applicazioni esterni e Application Load Balancer interni tra regioni, utilizza il comando:

    gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \
      --source=server_tls_policy.yaml \
      --location=global
    

    regionale

    Per gli Application Load Balancer esterni regionali e gli Application Load Balancer interni regionali, utilizza il comando:

    gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \
      --source=server_tls_policy.yaml \
      --location=REGION
    

Per maggiori informazioni, consulta Modalità di convalida del client MTLS.

Passaggi successivi