Configurazione dell'autenticazione reciproca TLS a livello di pool
Configurare l'autenticazione reciproca TLS ( mTLS ) a livello di pool per verificare i certificati dei server back-end e presentare i certificati client al momento della connessione ai server back-end.
Prima di iniziare
Prima di configurare l'autenticazione a livello di pool, assicurati di disporre di:
- Un bilanciatore di carico delle applicazioni con un profilo che supporti l' mTLS (verificare la proprietà
mtls_supported) - Una pool configurata con il protocollo HTTPS
- (Facoltativo) Un certificato CA valido in formato PEM, memorizzato in Secrets Manager, per verificare i certificati del server back-end
- (Facoltativo) Un certificato client valido con chiave privata in formato PEM, memorizzato in Secrets Manager, da presentare ai server back-end
- Le autorizzazioni IAM necessarie per gestire i bilanciatori di carico e i certificati di accesso in Secrets Manager
Comprendere l'autenticazione a livello di pool in mTLS
L'autenticazione a livello di pool offre due funzionalità distinte per proteggere le connessioni tra il bilanciatore di carico e i server back-end:
- Autenticazione server
- Verificare l'identità dei server back-end confrontando i loro certificati con un certificato CA configurato. Ciò garantisce che il bilanciatore di carico si connetta solo a server back-end affidabili.
- Autenticazione client
- Presentare un certificato client dal bilanciatore di carico ai server back-end quando l'infrastruttura back-end richiede l'autenticazione tramite certificato ( mTLS ). Ciò consente ai server back-end di verificare l'identità del bilanciatore di carico.
Queste funzionalità possono essere configurate singolarmente o insieme, a seconda delle vostre esigenze di sicurezza.
Configurazione dell'autenticazione del server mTLS
L'autenticazione del server si articola in due componenti:
- Verifica certificato
- Un flag booleano che abilita o disabilita la verifica dei certificati del server back-end. Se abilitato, il bilanciatore di carico verifica i certificati dei server back-end durante la fase di handshake TLS.
- Certificato dell'Autorità di Certificazione (CA)
- Un certificato CA facoltativo utilizzato per verificare i certificati dei server back-end. Se la verifica del server è abilitata ma non viene fornito alcun certificato CA, il bilanciatore di carico utilizza l'archivio di fiducia di sistema per convalidare i certificati dei server back-end.
Configurazione dell'autenticazione del client mTLS
L'autenticazione del cliente richiede:
- Certificato client
- Un certificato con chiave privata che il bilanciatore di carico presenta ai server back-end quando questi richiedono l'autenticazione del client durante la fase di handshake del protocollo TLS. Il certificato deve essere salvato in Secrets Manager.
Configurazione dell'autenticazione del pool " mTLS " nella console
Per configurare l'autenticazione per un pool nella console IBM Cloud:
- Accedere alla pagina " Bilanciatori di carico per VPC ".
- Fai clic sul nome del tuo Application Load Balancer.
- Fare clic sulla scheda " Pool di back-end ".
- Per una piscina esistente, fare clic sul menu Azioni
e selezionare Modifica. Per creare un nuovo pool, fare clic su Crea.
- Nella configurazione della pool:
- Assicurarsi che il protocollo sia impostato su HTTPS.
- Nella sezione " Autenticazione server ":
- Selezionare " Verifica certificato server " per abilitare la verifica del certificato del server back-end.
- (Facoltativo) Per l'autorità di certificazione, selezionare il certificato CA dall'indirizzo Secrets Manager che verrà utilizzato per verificare i certificati del server back-end. Se non specificato, viene utilizzato l'archivio di fiducia di sistema.
- Nella sezione " Autenticazione client ":
- Per il certificato client, selezionare il certificato dall' Secrets Manager che il bilanciatore di carico presenterà ai server back-end.
- Fai clic su " Salva " o " Crea".
Configurazione dell'autenticazione del pool " mTLS " tramite la CLI
Creazione di un pool con autenticazione server mTLS
Per creare un pool con la verifica del certificato del server back-end abilitata, utilizzare il comando ibmcloud is load-balancer-pool-create :
ibmcloud is load-balancer-pool-create POOL_NAME LOAD_BALANCER ALGORITHM PROTOCOL \
HEALTH_DELAY HEALTH_RETRIES HEALTH_TIMEOUT HEALTH_TYPE \
--server-auth-verify-cert true \
[--server-auth-ca-crn CA_CERT_CRN]
Dove:
POOL_NAMEè il nome della tua piscina.LOAD_BALANCERè l'ID o il nome del tuo bilanciatore di carico.ALGORITHMè l'algoritmo di bilanciamento del carico (round_robin, weighted_round_robin o least_connections).PROTOCOLDeve esserehttpsper il supporto di mTLS.CA_CERT_CRNè il CRN facoltativo del certificato CA utilizzato per verificare i certificati dei server back-end.
Esempio:
ibmcloud is load-balancer-pool-create my-pool my-load-balancer round_robin https \
20 2 5 http \
--server-auth-verify-cert true \
--server-auth-ca-crn crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f511
Creazione di un pool con autenticazione client di tip mTLS
Per creare un pool con l'opzione di presentazione del certificato client abilitata:
ibmcloud is load-balancer-pool-create POOL_NAME LOAD_BALANCER ALGORITHM PROTOCOL \
HEALTH_DELAY HEALTH_RETRIES HEALTH_TIMEOUT HEALTH_TYPE \
--client-auth-cert-crn CLIENT_CERT_CRN
Esempio:
ibmcloud is load-balancer-pool-create my-pool my-load-balancer round_robin https \
20 2 5 http \
--client-auth-cert-crn crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f512
Creazione di un pool con autenticazione sia lato server che lato client tramite mTLS
Per creare un pool che preveda sia la verifica da parte del server sia la presentazione del certificato da parte del client:
ibmcloud is load-balancer-pool-create my-pool my-load-balancer round_robin https \
20 2 5 http \
--server-auth-verify-cert true \
--server-auth-ca-crn crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f511 \
--client-auth-cert-crn crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f512
Aggiornamento di un pool per abilitare l'autenticazione del server mTLS
Per aggiornare un pool esistente in modo da abilitare l'autenticazione tramite server:
ibmcloud is load-balancer-pool-update LOAD_BALANCER POOL \
--server-auth-verify-cert true \
[--server-auth-ca-crn CA_CERT_CRN]
Esempio:
ibmcloud is load-balancer-pool-update my-load-balancer my-pool \
--server-auth-verify-cert true \
--server-auth-ca-crn crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f511
Aggiornamento di un pool per abilitare l'autenticazione client " mTLS "
Per aggiornare un pool esistente in modo da abilitare l'autenticazione client:
ibmcloud is load-balancer-pool-update LOAD_BALANCER POOL \
--client-auth-cert-crn CLIENT_CERT_CRN
Disattivazione dell'autenticazione del server " mTLS "
Per disabilitare l'autenticazione del server per un pool:
ibmcloud is load-balancer-pool-update LOAD_BALANCER POOL --reset-server-auth
Disattivazione dell'autenticazione client " mTLS "
Per disabilitare l'autenticazione client per un pool:
ibmcloud is load-balancer-pool-update LOAD_BALANCER POOL --reset-client-auth
Configurazione dell'autenticazione del pool tramite l'API
Creazione di un pool con un server mTLS e e autenticazione client
Per creare un pool con l'autenticazione sia lato server che lato client abilitata, chiamare il metodo POST /load_balancers/{load_balancer_id}/pools :
curl -X POST \
"$vpc_api_endpoint/v1/load_balancers/$load_balancer_id/pools?version=2026-05-06&generation=2" \
-H "Authorization: Bearer $iam_token" \
-d '{
"name": "my-pool",
"algorithm": "round_robin",
"protocol": "https",
"health_monitor": {
"delay": 20,
"max_retries": 2,
"timeout": 5,
"type": "http"
},
"server_authentication": {
"verify_certificate": true,
"certificate_authority": {
"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f511"
}
},
"client_authentication": {
"certificate_instance": {
"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f512"
}
}
}'
Aggiornamento di un pool per abilitare l'autenticazione del server mTLS
Per aggiornare un pool esistente e abilitare l'autenticazione del server, chiamare il metodo PATCH /load_balancers/{load_balancer_id}/pools/{id} :
curl -X PATCH \
"$vpc_api_endpoint/v1/load_balancers/$load_balancer_id/pools/$pool_id?version=2026-05-06&generation=2" \
-H "Authorization: Bearer $iam_token" \
-d '{
"server_authentication": {
"verify_certificate": true,
"certificate_authority": {
"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f511"
}
}
}'
Aggiornamento di un pool per abilitare l'autenticazione client " mTLS "
Per aggiornare un pool esistente in modo da abilitare l'autenticazione client:
curl -X PATCH \
"$vpc_api_endpoint/v1/load_balancers/$load_balancer_id/pools/$pool_id?version=2026-05-06&generation=2" \
-H "Authorization: Bearer $iam_token" \
-d '{
"client_authentication": {
"certificate_instance": {
"crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f512"
}
}
}'
Disattivazione dell'autenticazione del server " mTLS "
Per disabilitare l'autenticazione del server, impostare la proprietà server_authentication su null``:
curl -X PATCH \
"$vpc_api_endpoint/v1/load_balancers/$load_balancer_id/pools/$pool_id?version=2026-05-06&generation=2" \
-H "Authorization: Bearer $iam_token" \
-d '{
"server_authentication": null
}'
Disattivazione dell'autenticazione client " mTLS "
Per disabilitare l'autenticazione client, impostare la proprietà client_authentication su null``:
curl -X PATCH \
"$vpc_api_endpoint/v1/load_balancers/$load_balancer_id/pools/$pool_id?version=2026-05-06&generation=2" \
-H "Authorization: Bearer $iam_token" \
-d '{
"client_authentication": null
}'
Configurazione dell'autenticazione del pool di mTLS i con Terraform
Per configurare l'autenticazione di un pool tramite Terraform, utilizzare la risorsa ibm_is_lb_pool insieme ai blocchi server_authentication e client_authentication :
resource "ibm_is_lb_pool" "example" {
lb = ibm_is_lb.example.id
name = "my-pool"
algorithm = "round_robin"
protocol = "https"
health_delay = 20
health_retries = 2
health_timeout = 5
health_type = "http"
server_authentication {
verify_certificate = true
certificate_authority_crn = "crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f511"
}
client_authentication {
certificate_instance_crn = "crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f512"
}
}
Verifica della configurazione dell'autenticazione del pool di mTLS
Dopo aver configurato l'autenticazione del pool, verificare che funzioni correttamente:
-
Controlla lo stato del pool per assicurarti che i server back-end funzionino correttamente:
ibmcloud is load-balancer-pool LOAD_BALANCER POOL -
Se la verifica del server è abilitata, assicurarsi che i server back-end presentino certificati validi firmati dall'autorità di certificazione (CA) configurata.
-
Se l'autenticazione del client è abilitata, verificare che i server back-end siano in grado di convalidare il certificato del client presentato dal bilanciatore di carico.
-
Controllare i log del bilanciatore di carico per individuare eventuali errori di handshake TLS che potrebbero indicare problemi di convalida dei certificati.
Considerazioni importanti relative all'autenticazione a livello di pool di mTLS
- La configurazione a livello di pool si applica a tutti i server back-end
- Sia l'autenticazione del server che quella del client vengono configurate a livello di pool. Tutti i server back-end all'interno del pool utilizzano le stesse impostazioni di autenticazione. Se sono necessarie politiche di certificazione diverse per i vari server back-end, creare pool separati.
- Autorità di certificazione multiple per i server back-end
- Quando i server back-end appartenenti allo stesso pool sono firmati da autorità di certificazione diverse, è possibile fornire un file CA raggruppato contenente tutti i certificati radice e intermedi pertinenti. Tutti i server back-end sono considerati affidabili se la loro catena di certificati è collegata a una CA inclusa nel pacchetto.
- Archivio di fiducia del sistema
- Se la verifica del server è abilitata ma non viene fornito alcun certificato CA, il bilanciatore di carico utilizza l'archivio di fiducia di sistema ( Ubuntu Linux ) per convalidare i certificati dei server back-end. Questo funziona per i certificati firmati da autorità di certificazione pubbliche ben note, ma non per i certificati autofirmati o quelli emessi da autorità di certificazione private.
- Aggiornamenti dei certificati
- Quando si aggiornano i certificati in Secrets Manager, il bilanciatore di carico recupera automaticamente i certificati aggiornati. Tuttavia, potrebbe essere necessario ristabilire le connessioni attive per poter utilizzare i nuovi certificati.