In questa pagina vengono fornite istruzioni per la creazione di un certificato radice e
un certificato intermedio firmato, per poi caricarli.
a una risorsa TrustConfig
del gestore certificati. Se disponi di risorse
certificati da caricare, ignora i passaggi per la creazione di nuovi certificati.
Creerai anche le risorse di sicurezza di rete necessarie per la configurazione TLS reciproco (mTLS) per i bilanciatori del carico delle applicazioni. Le istruzioni utilizzano OpenSSL a per creare il certificato radice e intermedio.
Prima di iniziare
- Consulta la panoramica su TLS reciproco.
- Esamina la sezione Gestire le configurazioni di attendibilità.
Installa Google Cloud CLI. Per una panoramica completa dello strumento, consulta la panoramica dell'interfaccia a riga di comando gcloud. Puoi visualizzare relativi al bilanciamento del carico Riferimento per gcloud CLI e API.
Se non hai già eseguito gcloud CLI in precedenza, esegui prima il comando Comando
gcloud init
per l'autenticazione.Abilita le API: API Compute Engine, API Certificate Manager, Network Security e l'API Network Services.
Imposta il progetto.
gcloud
gcloud config set project PROJECT_ID
Autorizzazioni
Per ottenere le autorizzazioni necessarie per completare questa guida, chiedi all'amministratore di concederti seguenti ruoli IAM sul progetto:
-
Per creare risorse del bilanciatore del carico come
TargetHTTPSProxy
: Amministratore bilanciatore del carico Compute (roles/compute.loadBalancerAdmin
) -
Per utilizzare le risorse del Gestore certificati:
Proprietario del Gestore certificati (
roles/certificatemanager.owner
) -
Per creare i componenti di sicurezza e networking:
Amministratore rete Compute (
roles/compute.networkAdmin
) e Amministratore sicurezza Compute (roles/compute.securityAdmin
) -
Per creare un progetto (facoltativo):
Autore progetto (
roles/resourcemanager.projectCreator
)
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.
Genera una chiave e i certificati firmati
Questa sezione utilizza i comandi openssl
per creare elementi radice e intermedi
certificati.
Usa i comandi seguenti per generare un certificato radice e un certificato
certificato intermedio con campi keyUsage
e extendedKeyUsage
validi.
Crea un file
example.cnf
di esempio con la configurazione minima richiesta per creare certificati di firma validi. Puoi modificare se vuoi impostare campi aggiuntivi sui certificati.cat > example.cnf << EOF [req] distinguished_name = empty_distinguished_name [empty_distinguished_name] # Kept empty to allow setting via -subj command line arg. [ca_exts] basicConstraints=critical,CA:TRUE keyUsage=keyCertSign extendedKeyUsage=clientAuth EOF
Crea il certificato radice.
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 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
Crea il certificato intermedio.
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
Genera un certificato e aggiungilo a una lista consentita
Questa sezione utilizza i comandi openssl
per creare un certificato di esempio e aggiungerlo
a una lista consentita.
Usa i comandi seguenti per generare un certificato e aggiungerlo a una lista consentita.
openssl req -x509 \
-new -sha256 -newkey rsa:2048 -nodes \
-days 3650 -subj '/CN=localhost' \
-keyout allowlisted.key -out allowlisted.cert
Formattare i certificati
Per includere certificati nuovi o esistenti in un TrustStore
, formatta il
certificati in un'unica riga
e li archiviamo in variabili di ambiente, in modo che possano essere letti
. Utilizza i comandi seguenti per formattare i certificati e archiviarli in
variabili di ambiente:
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 che vengono aggiunti a una lista consentita in un
configurazione dell'attendibilità, formatta i certificati in una singola riga
e li archiviamo in variabili di ambiente, in modo che possano essere letti
. Per i certificati che si trovano in una lista consentita, utilizza il seguente comando per
formattare i certificati in un'unica riga e archiviarli nel
ALLOWLISTED_CERT
variabile di ambiente.
export ALLOWLISTED_CERT=$(cat allowlisted.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Crea una risorsa TrustConfig
Crea una risorsa TrustConfig
del gestore certificati
che rappresenta l'infrastruttura a chiave pubblica. Questa risorsa di esempio TrustConfig
contiene un oggetto
un archivio di attendibilità con due trust anchor e due certificati CA intermedi.
Legge i contenuti del certificato da
le variabili di ambiente create nell'ambito
Passaggio Formattare i certificati.
Per creare un archivio di attendibilità con trust anchor aggiuntivi o CA intermedia
certificati, aggiungi pemCertificate
righe nella sezione appropriata. Se disponi
meno trust anchor o certificati CA intermedi, rimuovi quelli non necessari
linee.
Questa risorsa di esempio TrustConfig
contiene un certificato che viene aggiunto a un
nella lista consentita. Puoi specificare più certificati in una lista consentita utilizzando
più istanze del campo pemCertificate
.
Nei seguenti passaggi, sostituisci TRUST_CONFIG_NAME
con il nome della risorsa TrustConfig
:
Per creare il file
trust_config.yaml
con un archivio di attendibilità, usa quanto segue :cat << EOF > trust_config.yaml trustStores: - trustAnchors: - pemCertificate: "${ROOT_CERT?}" - pemCertificate: "${ROOT_CERT_2?}" intermediateCas: - pemCertificate: "${INTERMEDIATE_CERT?}" - pemCertificate: "${INTERMEDIATE_CERT_2?}" EOF
(Facoltativo) Per creare il file
trust_config.yaml
con un certificato che sia aggiunto a una lista consentita, utilizza il seguente comando:cat << EOF > trust_config.yaml allowlistedCertificates: - pemCertificate: "${ALLOWLISTED_CERT?}" EOF
Per creare le risorse
TrustConfig
del gestore certificati, utilizza la Comandogcloud certificate-manager trust-configs import
:globale
Per i bilanciatori del carico delle applicazioni esterni e i bilanciatori del carico delle applicazioni interni tra regioni, utilizza questo comando:
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --source=trust_config.yaml
regionale
Per i bilanciatori del carico delle applicazioni esterni regionali e i bilanciatori del carico delle applicazioni interni regionali, utilizza questo comando:
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --source=trust_config.yaml \ --location=REGION
crea le risorse di sicurezza di rete
Un criterio TLS del server (ServerTLSPolicy
risorsa di sicurezza di rete) ti consente
specifica la modalità TLS lato server e la risorsa TrustConfig
da utilizzare
durante la convalida dei certificati client. Se il cliente presenta un annuncio non valido
o nessun certificato al bilanciatore del carico,
clientValidationMode
specifica come viene gestita la connessione del client.
- Quando
clientValidationMode
è impostato suALLOW_INVALID_OR_MISSING_CLIENT_CERT
, tutte le richieste vengono passate al backend anche se la convalida non riesce o certificato client mancante. - Quando
clientValidationMode
è impostato suREJECT_INVALID
, richiede solo che fornisci un certificato client che possa essere convalidato rispetto a unTrustConfig
vengono passate al backend.
Per creare la risorsa ServerTLSPolicy
, completa i seguenti passaggi:
In base a come vuoi gestire la connessione, seleziona una delle seguenti opzioni le opzioni di CPU e memoria disponibili.
Nei passaggi successivi, sostituisci
SERVER_TLS_POLICY_NAME
con il nome del server il criterio TLS e sostituisciPROJECT_ID
con l'ID di del tuo progetto Google Cloud.Opzione 1:
clientValidationMode
è impostata suALLOW_INVALID_OR_MISSING_CLIENT_CERT
.Per creare il file
server_tls_policy.yaml
, utilizza questo comando:globale
Per i bilanciatori del carico delle applicazioni esterni e i bilanciatori del carico delle applicazioni 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 i bilanciatori del carico delle applicazioni esterni regionali e i bilanciatori del carico delle applicazioni 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 suREJECT_INVALID
.Per creare il file
server_tls_policy.yaml
, utilizza questo comando:globale
Per i bilanciatori del carico delle applicazioni esterni e i bilanciatori del carico delle applicazioni 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 i bilanciatori del carico delle applicazioni esterni regionali e i bilanciatori del carico delle applicazioni 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
Per creare la risorsa
ServerTlsPolicy
, utilizza Comandogcloud network-security server-tls-policies import
:globale
Per i bilanciatori del carico delle applicazioni esterni e i bilanciatori del carico delle applicazioni 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 i bilanciatori del carico delle applicazioni esterni regionali e i bilanciatori del carico delle applicazioni interni regionali, utilizza il comando:
gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \ --source=server_tls_policy.yaml \ --location=REGION
Per ulteriori informazioni, vedi Modalità di convalida del client MTLS.
Firma una chiave client con il certificato intermedio
Questa sezione fornisce un'opzione di configurazione aggiuntiva per generare un file leaf
certificato.
Se hai già creato una risorsa TrustConfig utilizzando
certificati intermedi (int.cert
e int.key
), usa quanto segue
istruzioni:
Crea un file di configurazione della chiave client.
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 collegare un'identità SPIFFE:
Aggiungi
subjectAltName
a la sezione[extension_requirements]
come segue:subjectAltName = @sans_list
Aggiungi una nuova sezione in fondo al file
client.config
con il seguenti:[sans_list] URI.1 = spiffe://example.com/test-identity
Firma la chiave.
openssl req -new -keyout client.key -out client.csr -config client.config openssl x509 -req -in client.csr -out client.cert -extfile client.config -extensions extension_requirements -days 365 -CA int.cert -CAkey int.key
Per testare, invia una richiesta
curl
all'indirizzo IP del bilanciatore del carico.curl -v -k --key client.key --cert client.cert https://IP_ADDRESS
Sostituisci IP_ADDRESS con l'indirizzo IP del bilanciatore del carico.
Passaggi successivi
- Configura TLS reciproco per un bilanciatore del carico delle applicazioni esterno globale
- Configura TLS reciproco per un bilanciatore del carico delle applicazioni classico
- Configura TLS reciproco per un bilanciatore del carico delle applicazioni interno
- Configura TLS reciproco per un bilanciatore del carico delle applicazioni esterno regionale
- Configura TLS reciprocamente con una CA privata