Un certificato client valido deve mostrare una catena di attendibilità che rimanda all'ancora di attendibilità (certificato radice) nell'archivio attendibilità. Questa pagina fornisce istruzioni per creare la tua catena di attendibilità configurando i tuoi certificati root e intermedi utilizzando la libreria OpenSSL.
Dopo aver creato le radici di attendibilità, questo documento descrive la procedura per caricarle nell'archivio attendibilità della risorsa TrustConfig
di Certificate Manager. Segue il collegamento della configurazione di attendibilità alla risorsa di autenticazione client (ServerTLSPolicy
) e poi l'associazione della risorsa di autenticazione client alla risorsa proxy HTTPS di destinazione del bilanciatore del carico.
Prima di iniziare
- Consulta la panoramica di Mutual TLS.
- Consulta la guida per gestire le configurazioni di attendibilità.
Installa Google Cloud CLI. Per una panoramica completa dello strumento, consulta la panoramica di gcloud CLI. Puoi trovare i comandi relativi al bilanciamento del carico nel riferimento all'API e a gcloud CLI.
Se non hai mai eseguito l'interfaccia alla gcloud CLI, esegui prima il comando
gcloud init
per l'autenticazione.Abilita le seguenti API: API Compute Engine, API Certificate Manager, API Network Security e API Network Services. Per saperne di più, vedi Abilitazione delle API.
Se utilizzi il bilanciatore del carico delle applicazioni esterno globale o il bilanciatore del carico delle applicazioni classico, assicurati di aver configurato un bilanciatore del carico con uno dei seguenti backend supportati:
- Backend di gruppi di istanze VM
- Bucket Cloud Storage (supportati solo se al bilanciatore del carico è collegato anche almeno un servizio di backend, oltre al bucket di backend)
- Cloud Run, App Engine o Cloud Run Functions
- Connettività ibrida
- Backend Private Service Connect
Se utilizzi il bilanciatore del carico delle applicazioni esterno regionale, il bilanciatore del carico delle applicazioni interno tra regioni o il bilanciatore del carico delle applicazioni interno regionale, assicurati di aver configurato un bilanciatore del carico con uno dei seguenti backend supportati:
- Backend di gruppi di istanze VM
- Cloud Run
- Connettività ibrida
- Backend Private Service Connect
Configura il progetto.
gcloud
gcloud config set project PROJECT_ID
Autorizzazioni
Per ottenere le autorizzazioni necessarie per completare questa guida, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
-
Per creare risorse del bilanciatore del carico come
TargetHTTPSProxy
: Amministratore bilanciatore del carico Compute (roles/compute.loadBalancerAdmin
) -
Per utilizzare le risorse di Certificate Manager:
Certificate Manager Owner (
roles/certificatemanager.owner
) -
Per creare componenti di sicurezza e networking:
Compute Network Admin (
roles/compute.networkAdmin
) e Compute Security Admin (roles/compute.securityAdmin
) -
(Facoltativo) Per creare un progetto:
Project Creator (
roles/resourcemanager.projectCreator
)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Crea i certificati radice e intermedi
Questa sezione utilizza la libreria OpenSSL per creare il certificato radice (ancora di attendibilità) e il certificato intermedio.
Un certificato radice si trova in cima alla catena di certificati. Un certificato intermedio fa parte della catena di attendibilità che porta al certificato radice. Il certificato intermedio è firmato crittograficamente dal certificato radice. Quando il bilanciatore del carico riceve un certificato client, lo convalida stabilendo una catena di attendibilità dal certificato client al trust anchor configurato.
Utilizza i seguenti comandi per creare i certificati radice e intermedi. La creazione del certificato intermedio è facoltativa. Tuttavia, in questa configurazione utilizziamo il certificato intermedio per firmare il certificato client.
Crea un file di configurazione OpenSSL.
Nell'esempio seguente, il file di configurazione (
example.cnf
) contiene la sezione[ca_exts]
, che specifica le estensioni X.509 che contrassegnano il certificato come adatto a una CA. Per scoprire di più sui requisiti per i certificati root e intermedi, consulta Requisiti dei certificati.cat > example.cnf << EOF [req] distinguished_name = empty_distinguished_name [empty_distinguished_name] # Kept empty to allow setting via -subj command-line argument. [ca_exts] basicConstraints=critical,CA:TRUE keyUsage=keyCertSign extendedKeyUsage=clientAuth EOF
Crea un certificato radice X.509 autofirmato (
root.cert
). Il certificato radice è autofirmato con la propria chiave privata (root.key
).openssl req -x509 \ -new -sha256 -newkey rsa:2048 -nodes \ -days 3650 -subj '/CN=root' \ -config example.cnf \ -extensions ca_exts \ -keyout root.key -out root.cert
Crea la richiesta di firma del certificato (
int.req
) per il certificato intermedio.openssl req -new \ -sha256 -newkey rsa:2048 -nodes \ -subj '/CN=int' \ -config example.cnf \ -extensions ca_exts \ -keyout int.key -out int.req
Firma la CSR per creare il certificato intermedio X.509 (
int.cert
). La CSR viene firmata utilizzando il certificato radice.openssl x509 -req \ -CAkey root.key -CA root.cert \ -set_serial 1 \ -days 3650 \ -extfile example.cnf \ -extensions ca_exts \ -in int.req -out int.cert
Crea un certificato autofirmato che può essere aggiunto a una lista consentita
Puoi creare un certificato autofirmato e aggiungerlo a una lista consentita nella configurazione di attendibilità.
Utilizza il seguente comando OpenSSL per creare un certificato X.509 autofirmato.
openssl req -x509 \
-new -sha256 -newkey rsa:2048 -nodes \
-days 3650 -subj '/CN=localhost' \
-keyout allowlisted.key -out allowlisted.cert
Questo certificato viene quindi aggiunto a un campo allowlistedCertificates
nella
configurazione di attendibilità.
Formattare i certificati
Per includere certificati nuovi o esistenti in un TrustStore
, formatta i certificati in una singola riga e archiviali nelle variabili di ambiente, in modo che possano essere referenziati dal file YAML di configurazione dell'attendibilità.
export ROOT_CERT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
export INTERMEDIATE_CERT=$(cat int.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Per includere certificati nuovi o esistenti aggiunti a una lista consentita in una
configurazione di attendibilità, formatta i certificati in una singola riga
e archiviali nelle variabili di ambiente, in modo che possano essere letti nel file YAML. Per i certificati inclusi in una lista consentita, utilizza questo comando per
formattarli in una singola riga e archiviarli nella variabile di ambiente
ALLOWLISTED_CERT
.
export ALLOWLISTED_CERT=$(cat allowlisted.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Crea una risorsa di configurazione dell'attendibilità
Una configurazione di attendibilità è una risorsa che rappresenta la configurazione dell'infrastruttura a chiave pubblica (PKI) in Gestore certificati.
Per creare una risorsa di configurazione dell'attendibilità, completa i seguenti passaggi:
Console
Nella console Google Cloud , vai alla pagina Certificate Manager.
Nella scheda Configurazioni di attendibilità, fai clic su Aggiungi configurazione di attendibilità.
Inserisci un nome per la configurazione.
Per Località, seleziona Globale o Regionale.
La località indica dove viene archiviata la risorsa di configurazione dell'attendibilità. Per i bilanciatori del carico delle applicazioni esterni globali, i bilanciatori del carico delle applicazioni classici e i bilanciatori del carico delle applicazioni interni tra regioni, crea una risorsa di configurazione dell'attendibilità globale. Per i bilanciatori del carico delle applicazioni esterni regionali e i bilanciatori del carico delle applicazioni interni regionali, crea una risorsa di configurazione dell'attendibilità regionale.
Se hai selezionato Regionale, seleziona la regione.
Nella sezione Archivio di attendibilità, fai clic su Aggiungi ancoraggio attendibilità e carica il file del certificato con codifica PEM o copia i contenuti del certificato.
Fai clic su Aggiungi.
Nella sezione Trust store, fai clic su Aggiungi CA intermedia e carica il file del certificato con codifica PEM o copia i contenuti del certificato.
Questo passaggio ti consente di aggiungere un altro livello di attendibilità tra il certificato radice e il certificato del server.
Fai clic su Aggiungi per aggiungere la CA intermedia.
(Facoltativo) Nella sezione Certificati consentiti, fai clic su Aggiungi certificato e carica il file del certificato con codifica PEM o copia i contenuti del certificato.
Fai clic su Aggiungi per aggiungere il certificato consentito.
Fai clic su Crea.
Verifica che la nuova risorsa di configurazione dell'attendibilità venga visualizzata nell'elenco delle configurazioni.
gcloud
Crea un file YAML di configurazione dell'attendibilità (
trust_config.yaml
) che specifica i parametri di configurazione dell'attendibilità. Questa risorsa di configurazione dell'attendibilità di esempio contiene un archivio di attendibilità con un trust anchor e un certificato intermedio. Legge il contenuto del certificato dalle variabili di ambiente create nel passaggio precedente Formatta i certificati.cat << EOF > trust_config.yaml trustStores: - trustAnchors: - pemCertificate: "${ROOT_CERT?}" intermediateCas: - pemCertificate: "${INTERMEDIATE_CERT?}" EOF
Per creare un trust store con trust anchor o certificati intermedi aggiuntivi, aggiungi righe
pemCertificate
nella sezione appropriata.(Facoltativo) Specifica il certificato da aggiungere al file YAML di configurazione dell'attendibilità nel campo
allowlistedCertificates
. Non è necessario un archivio attendibile per aggiungere un certificato a una lista consentita.cat << EOF >> trust_config.yaml allowlistedCertificates: - pemCertificate: "${ALLOWLISTED_CERT?}" EOF
Un certificato aggiunto a una consente di includere qualsiasi certificato che può essere incapsulato nella configurazione di attendibilità in modo che venga sempre considerato valido. Puoi specificare più certificati in una lista consentita utilizzando più istanze del campo
pemCertificate
.Per importare il file YAML di configurazione dell'attendibilità, utilizza il comando
gcloud certificate-manager trust-configs import
:globale
Per i bilanciatori del carico delle applicazioni esterni globali, i bilanciatori del carico delle applicazioni classici e i bilanciatori del carico delle applicazioni interni tra regioni, specifica
global
come posizione in cui è archiviata la risorsa di configurazione dell'attendibilità.gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --source=trust_config.yaml \ --location=global
Sostituisci quanto segue:
TRUST_CONFIG_NAME
: il nome della risorsa di configurazione dell'attendibilità.
regionale
Per i bilanciatori del carico delle applicazioni esterni regionali e i bilanciatori del carico delle applicazioni interni regionali, specifica la regione in cui è archiviata la risorsa di configurazione dell'attendibilità.
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --source=trust_config.yaml \ --location=LOCATION
Sostituisci quanto segue:
TRUST_CONFIG_NAME
: il nome della risorsa di configurazione dell'attendibilità.LOCATION
: la regione in cui è archiviata la risorsa di configurazione dell'attendibilità. La posizione predefinita èglobal
.
Crea una risorsa di autenticazione client
Una risorsa di autenticazione client (chiamata anche ServerTLSPolicy
) consente
di specificare la modalità TLS lato server e la risorsa di configurazione dell'attendibilità da utilizzare
durante la convalida dei certificati client. Se il client ha un certificato non valido o non ha nessun certificato per il bilanciatore del carico, clientValidationMode
specifica come viene gestita la connessione del client. Per ulteriori informazioni, consulta
Modalità di convalida client mTLS.
- Quando
clientValidationMode
è impostato suALLOW_INVALID_OR_MISSING_CLIENT_CERT
, tutte le richieste vengono trasmesse al backend anche se la convalida non riesce o se il certificato client non è presente. - Quando
clientValidationMode
è impostato suREJECT_INVALID
, solo le richieste che forniscono un certificato client che può essere convalidato in base a una risorsaTrustConfig
vengono trasmesse al backend.
Per creare una risorsa di autenticazione client (ServerTlsPolicy
),
completa i seguenti passaggi:
Console
Nella console Google Cloud , vai alla pagina Configurazione dell'autenticazione.
Nella scheda Autenticazione client, fai clic su Crea.
Inserisci un nome per la risorsa di autenticazione client.
Per Località, seleziona Globale o Regionale.
Per i bilanciatori del carico delle applicazioni esterni globali, i bilanciatori del carico delle applicazioni classici e i bilanciatori del carico delle applicazioni interni tra regioni, imposta la località su globale. Per i bilanciatori del carico delle applicazioni esterni regionali e i bilanciatori del carico delle applicazioni interni regionali, imposta la località sulla regione in cui è configurato il bilanciatore del carico.
In Modalità di autenticazione client, seleziona Bilanciamento del carico.
Seleziona una modalità di convalida client.
Seleziona la risorsa di configurazione di attendibilità che hai creato in precedenza.
Fai clic su Crea.
Verifica che venga visualizzata l'autenticazione client (ServerTlsPolicy
).
gcloud
In base a come vuoi gestire la connessione, seleziona una delle seguenti opzioni per definire la risorsa di autenticazione client (
ServerTlsPolicy
) in formato YAML.Opzione 1:
clientValidationMode
è impostato suALLOW_INVALID_OR_MISSING_CLIENT_CERT
.globale
Per i bilanciatori del carico delle applicazioni esterni globali, i bilanciatori del carico delle applicazioni classici e i bilanciatori del carico delle applicazioni interni tra regioni, crea un file YAML che specifica in modo dichiarativo la modalità di convalida del client e una risorsa di configurazione dell'attendibilità globale:
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 i bilanciatori del carico delle applicazioni esterni regionali e i bilanciatori del carico delle applicazioni interni regionali, crea un file YAML che specifica in modo dichiarativo la modalità di convalida del client e una risorsa di configurazione dell'attendibilità regionale:
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
è impostato suREJECT_INVALID
.globale
Per i bilanciatori del carico delle applicazioni esterni globali, i bilanciatori del carico delle applicazioni classici e i bilanciatori del carico delle applicazioni interni tra regioni, crea un file YAML che specifica in modo dichiarativo la modalità di convalida del client e una risorsa di configurazione dell'attendibilità globale:
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 i bilanciatori del carico delle applicazioni esterni regionali e i bilanciatori del carico delle applicazioni interni regionali, crea un file YAML che specifica in modo dichiarativo la modalità di convalida del client e una risorsa di configurazione dell'attendibilità regionale:
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
Sostituisci quanto segue:
SERVER_TLS_POLICY_NAME
: il nome della risorsa di autenticazione client (ServerTlsPolicy
).PROJECT_ID
: l'ID del tuo Google Cloud progetto.LOCATION
: per i bilanciatori del carico delle applicazioni esterni globali, i bilanciatori del carico delle applicazioni classici e i bilanciatori del carico delle applicazioni interni tra regioni, utilizzaglobal
. Per il bilanciatore del carico delle applicazioni esterno regionale o il bilanciatore del carico delle applicazioni interno regionale, utilizza la regione in cui hai configurato il bilanciatore del carico.TRUST_CONFIG_NAME
: il nome della risorsa di configurazione dell'attendibilità che hai creato in precedenza.
Per importare la risorsa
ServerTlsPolicy
di autenticazione client, utilizza il comandogcloud network-security server-tls-policies import
:globale
Per i bilanciatori del carico delle applicazioni esterni globali, i bilanciatori del carico delle applicazioni classici e i bilanciatori del carico delle applicazioni interni tra regioni, imposta il flag
--location
suglobal
.gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \ --source=server_tls_policy.yaml \ --location=global
Sostituisci quanto segue:
SERVER_TLS_POLICY_NAME
: il nome della risorsa di autenticazione client (ServerTlsPolicy
).regionale
Per i bilanciatori del carico delle applicazioni esterni regionali e i bilanciatori del carico delle applicazioni interni regionali, imposta il flag
--location
sulla regione in cui è configurato il bilanciatore del carico.gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \ --source=server_tls_policy.yaml \ --location=LOCATION
Sostituisci quanto segue:
SERVER_TLS_POLICY_NAME
: il nome della risorsa di autenticazione client (ServerTlsPolicy
).(Facoltativo) Per elencare tutte le risorse di autenticazione client (
ServerTlsPolicies
), utilizza il comandogcloud network-security server-tls-policies list
:gcloud network-security server-tls-policies list \ --location=LOCATION
Sostituisci quanto segue:
LOCATION
: per i bilanciatori del carico delle applicazioni esterni globali, i bilanciatori del carico delle applicazioni classici e i bilanciatori del carico delle applicazioni interni tra regioni, utilizzaglobal
. Per il bilanciatore del carico delle applicazioni esterno regionale o il bilanciatore del carico delle applicazioni interno regionale, utilizza la regione in cui hai configurato il bilanciatore del carico.
Collega la risorsa di autenticazione client al bilanciatore del carico
Affinché l'autenticazione TLS reciproca (mTLS) funzioni, dopo aver configurato il bilanciatore del carico, devi collegare la risorsa di autenticazione client (ServerTLSPolicy
) alla risorsa proxy HTTPS di destinazione del bilanciatore del carico.
Console
Nella console Google Cloud , vai alla pagina Bilanciamento del carico.
Dall'elenco dei bilanciatori del carico, seleziona quello a cui devi collegare la risorsa di autenticazione client (
ServerTLSPolicy
).Fai clic su
Modifica.Nella sezione Configurazione frontend per un frontend HTTPS, espandi la sezione Mostra funzionalità avanzate.
Dall'elenco Client Authentication (Autenticazione client), seleziona la risorsa Autenticazione client.
Fai clic su Fine.
Fai clic su Aggiorna.
gcloud
Per elencare tutte le risorse proxy HTTPS di destinazione nel tuo progetto, utilizza il comando
gcloud compute target-https-proxies list
:gcloud compute target-https-proxies list
Prendi nota del nome del proxy HTTPS di destinazione a cui collegare la risorsa
ServerTLSPolicy
. Questo nome viene indicato comeTARGET_HTTPS_PROXY_NAME
nei passaggi seguenti.Per esportare la configurazione di un proxy HTTPS di destinazione in un file, utilizza il comando
gcloud compute target-https-proxies export
.globale
gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --destination=TARGET_PROXY_FILENAME \ --global
Sostituisci quanto segue:
TARGET_HTTPS_PROXY_NAME
: il nome del proxy di destinazione.TARGET_PROXY_FILENAME
: il nome del file di configurazione del proxy di destinazione in formato YAML. Ad esempio,mtls_target_proxy.yaml
.
regionale
gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --destination=TARGET_PROXY_FILENAME \ --region=REGION
Sostituisci quanto segue:
TARGET_HTTPS_PROXY_NAME
: il nome del proxy di destinazione.TARGET_PROXY_FILENAME
: il nome del file di configurazione del proxy di destinazione in formato YAML. Ad esempio,mtls_target_proxy.yaml
REGION
: la regione in cui hai configurato il bilanciatore del carico.
Per elencare tutte le risorse di autenticazione client (
ServerTlsPolicy
), utilizza il comandogcloud network-security server-tls-policies list
:gcloud network-security server-tls-policies list \ --location=LOCATION
Sostituisci quanto segue:
LOCATION
: per il bilanciatore del carico delle applicazioni interno tra regioni, il bilanciatore del carico delle applicazioni esterno globale o il bilanciatore del carico delle applicazioni classico, utilizzaglobal
. Per il bilanciatore del carico delle applicazioni esterno regionale o il bilanciatore del carico delle applicazioni interno regionale, utilizza la regione in cui hai configurato il bilanciatore del carico.Prendi nota del nome della risorsa di autenticazione client (
ServerTLSPolicy
) per configurare mTLS. Questo nome viene chiamatoSERVER_TLS_POLICY_NAME
nel passaggio successivo.Aggiungi l'autenticazione client (
ServerTlsPolicy
) al proxy HTTPS di destinazione.echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/LOCATION/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> TARGET_PROXY_FILENAME
Sostituisci quanto segue:
PROJECT_ID
: l'ID del tuo Google Cloud progetto.LOCATION
: per i bilanciatori del carico delle applicazioni esterni globali o classici e per i bilanciatori del carico delle applicazioni interni tra regioni, utilizzaglobal
. Per il bilanciatore del carico delle applicazioni esterno regionale o il bilanciatore del carico delle applicazioni interno regionale, utilizza la regione in cui hai configurato il bilanciatore del carico.SERVER_TLS_POLICY_NAME
: il nome della risorsa di autenticazione client (ServerTLSPolicy
).TARGET_PROXY_FILENAME
: il nome del file di configurazione del proxy di destinazione in formato YAML.
Per importare la configurazione di un proxy HTTPS di destinazione da un file, utilizza il comando
gcloud compute target-https-proxies import
.globale
gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --source=TARGET_PROXY_FILENAME \ --global
Sostituisci quanto segue:
TARGET_HTTPS_PROXY_NAME
: il nome del proxy di destinazione.TARGET_PROXY_FILENAME
: il nome del file di configurazione del proxy di destinazione in formato YAML. Ad esempio,mtls_target_proxy.yaml
.
regionale
gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --source=TARGET_PROXY_FILENAME \ --region=REGION
Sostituisci quanto segue:
TARGET_HTTPS_PROXY_NAME
: il nome del proxy di destinazione.TARGET_PROXY_FILENAME
: il nome del file di configurazione del proxy di destinazione in formato YAML. Ad esempio,mtls_target_proxy.yaml
REGION
: la regione in cui hai configurato il bilanciatore del carico.
Aggiungere intestazioni personalizzate mTLS
Quando attivi mTLS, puoi trasmettere informazioni sulla connessione mTLS utilizzando intestazioni personalizzate. Puoi anche attivare la registrazione dei log in modo che gli errori di connessione mTLS vengano acquisiti nei log.
Aggiungi intestazioni personalizzate mTLS ai servizi di backend
Per i bilanciatori del carico delle applicazioni esterni globali o classici, puoi utilizzare intestazioni personalizzate per trasmettere informazioni sulla connessione mTLS ai servizi di backend.
Per elencare tutti i servizi di backend nel progetto, utilizza il comando
gcloud compute backend-services list
:gcloud compute backend-services list
Prendi nota del nome del servizio di backend per abilitare le intestazioni personalizzate e la registrazione. Questo nome viene indicato come
BACKEND_SERVICE
nel passaggio successivo.Per aggiornare il servizio di backend, utilizza il comando
gcloud compute backend-services update
:gcloud compute backend-services update BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=1 \ --custom-request-header='X-Client-Cert-Present:{client_cert_present}' \ --custom-request-header='X-Client-Cert-Chain-Verified:{client_cert_chain_verified}' \ --custom-request-header='X-Client-Cert-Error:{client_cert_error}' \ --custom-request-header='X-Client-Cert-Hash:{client_cert_sha256_fingerprint}' \ --custom-request-header='X-Client-Cert-Serial-Number:{client_cert_serial_number}' \ --custom-request-header='X-Client-Cert-SPIFFE:{client_cert_spiffe_id}' \ --custom-request-header='X-Client-Cert-URI-SANs:{client_cert_uri_sans}' \ --custom-request-header='X-Client-Cert-DNSName-SANs:{client_cert_dnsname_sans}' \ --custom-request-header='X-Client-Cert-Valid-Not-Before:{client_cert_valid_not_before}' \ --custom-request-header='X-Client-Cert-Valid-Not-After:{client_cert_valid_not_after}'
Aggiungi intestazioni personalizzate mTLS alla mappa degli URL
Per il bilanciatore del carico delle applicazioni interno cross-region, il bilanciatore del carico delle applicazioni esterno regionale o il bilanciatore del carico delle applicazioni interno regionale, puoi utilizzare le intestazioni personalizzate per trasmettere informazioni sulla connessione mTLS alla mappa URL.
Per elencare tutte le mappe URL nel progetto, utilizza il
comando gcloud compute url-maps list
:
gcloud compute url-maps list
Prendi nota del nome della mappa URL per attivare le intestazioni personalizzate e la registrazione.
Questo nome viene indicato come URL_MAP_NAME
nel
passaggio successivo.
globale
Per modificare la mappa URL per un bilanciatore del carico delle applicazioni interno tra regioni, utilizza il comando
gcloud compute
url-maps edit
:
gcloud compute url-maps edit URL_MAP_NAME --global
Di seguito è riportato un file YAML di esempio che mostra come utilizzare le variabili
nelle intestazioni delle richieste personalizzate (requestHeadersToAdd
). Puoi utilizzare le stesse variabili per inviare intestazioni delle risposte personalizzate
(responseHeadersToAdd
).
headerAction: requestHeadersToAdd: - headerName: "X-Client-Cert-Present" headerValue: "{client_cert_present}" - headerName: "X-Client-Cert-Chain-Verified" headerValue: "{client_cert_chain_verified}" - headerName: "X-Client-Cert-Error" headerValue: "{client_cert_error}" - headerName: "X-Client-Cert-Hash" headerValue: "{client_cert_sha256_fingerprint}" - headerName: "X-Client-Cert-Serial-Number" headerValue: "{client_cert_serial_number}" - headerName: "X-Client-Cert-SPIFFE" headerValue: "{client_cert_spiffe_id}" - headerName: "X-Client-Cert-URI-SANs" headerValue: "{client_cert_uri_sans}" - headerName: "X-Client-Cert-DNSName-SANs" headerValue: "{client_cert_dnsname_sans}" - headerName: "X-Client-Cert-Valid-Not-Before" headerValue: "{client_cert_valid_not_before}" - headerName: "X-Client-Cert-Valid-Not-After" headerValue: "{client_cert_valid_not_after}" - headerName: "X-Client-Cert-Issuer-Dn" headerValue: "{client_cert_issuer_dn}" - headerName: "X-Client-Cert-Subject-Dn" headerValue: "{client_cert_subject_dn}" - headerName: "X-Client-Cert-Leaf" headerValue: "{client_cert_leaf}" - headerName: "X-Client-Cert-Chain" headerValue: "{client_cert_chain}"
regionale
Per modificare la mappa URL per un bilanciatore del carico delle applicazioni esterno regionale o un bilanciatore del carico delle applicazioni interno regionale, utilizza il comando gcloud compute
url-maps edit
:
gcloud compute url-maps edit URL_MAP_NAME --region=REGION
Di seguito è riportato un file YAML di esempio che mostra come utilizzare le variabili nelle intestazioni delle richieste personalizzate (requestHeadersToAdd
). Puoi utilizzare le stesse variabili per inviare intestazioni delle risposte personalizzate (responseHeadersToAdd
).
defaultService: regions/REGION/backendServices/BACKEND_SERVICE_1 name: regional-lb-map region: region/REGION headerAction: requestHeadersToAdd: - headerName: "X-Client-Cert-Present" headerValue: "{client_cert_present}" - headerName: "X-Client-Cert-Chain-Verified" headerValue: "{client_cert_chain_verified}" - headerName: "X-Client-Cert-Error" headerValue: "{client_cert_error}" - headerName: "X-Client-Cert-Hash" headerValue: "{client_cert_sha256_fingerprint}" - headerName: "X-Client-Cert-Serial-Number" headerValue: "{client_cert_serial_number}" - headerName: "X-Client-Cert-SPIFFE" headerValue: "{client_cert_spiffe_id}" - headerName: "X-Client-Cert-URI-SANs" headerValue: "{client_cert_uri_sans}" - headerName: "X-Client-Cert-DNSName-SANs" headerValue: "{client_cert_dnsname_sans}" - headerName: "X-Client-Cert-Valid-Not-Before" headerValue: "{client_cert_valid_not_before}" - headerName: "X-Client-Cert-Valid-Not-After" headerValue: "{client_cert_valid_not_after}" - headerName: "X-Client-Cert-Issuer-Dn" headerValue: "{client_cert_issuer_dn}" - headerName: "X-Client-Cert-Subject-Dn" headerValue: "{client_cert_subject_dn}" - headerName: "X-Client-Cert-Leaf" headerValue: "{client_cert_leaf}" - headerName: "X-Client-Cert-Chain" headerValue: "{client_cert_chain}"
Firma il certificato client con il certificato intermedio
Questa sezione fornisce un'opzione di configurazione aggiuntiva per generare un certificato client (foglia). Se hai già creato una risorsa TrustConfig che contiene un certificato intermedio, procedi nel seguente modo:
Crea un file di configurazione per generare la CSR per il certificato client.
Il seguente file di configurazione (
client.config
) contiene la sezione[extension_requirements]
, che specifica le estensioni X.509 da includere nella CSR. Per scoprire di più sui requisiti per i certificati client, consulta Requisiti dei certificati.cat > client.config << EOF [req] default_bits = 2048 req_extensions = extension_requirements distinguished_name = dn_requirements prompt = no [extension_requirements] basicConstraints = critical, CA:FALSE keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = clientAuth [dn_requirements] countryName = US stateOrProvinceName = California localityName = San Francisco 0.organizationName = example organizationalUnitName = test commonName = test.example.com emailAddress = test@example.com EOF
Se vuoi allegare un'identità SPIFFE al file di configurazione:
Aggiungi un campo
subjectAltName
alla sezione[extension_requirements]
come segue:subjectAltName = @sans_list
Aggiungi una nuova sezione (
[sans_list]
) in fondo al fileclient.config
come segue:[sans_list] URI.1 = spiffe://example.com/test-identity
Crea la CSR (
client.csr
) per il certificato client.openssl req -new \ -config client.config \ -keyout client.key -out client.csr
Firma la CSR per emettere il certificato client X.509 (
client.cert
). La CSR è firmata dal certificato intermedio.openssl x509 -req \ -CAkey int.key -CA int.cert \ -days 365 \ -extfile client.config \ -extensions extension_requirements \ -in client.csr -out client.cert
Invia una richiesta HTTPS sicura all'indirizzo IP del bilanciatore del carico utilizzando il certificato SSL lato client. Il client presenta il proprio certificato (
client.cert
) per autenticarsi al bilanciatore del carico.curl -v --key client.key --cert client.cert https://IP_ADDRESS
Sostituisci IP_ADDRESS con l'indirizzo IP del bilanciatore del carico.