Utilizzo di TLS reciproco
L'autenticazione Mutual Transport Layer Security (mTLS) garantisce che il traffico sia sicuro e affidabile in entrambe le direzioni tra un client e un server. È disponibile solo per i clienti con qualsiasi livello di piano Enterprise.
Quando è configurato mTLS, l'accesso viene concesso solo a richieste con un corrispondente certificato client. Quando una richiesta arriva alla vostra applicazione, CIS risponde con una richiesta di certificato del client. Se il cliente non riesce a presentare il certificato, la richiesta non è consentita. In caso contrario, il cambio chiave procede.

Configurazione di TLS reciproco
Mutual TLS ( mTLS ) fornisce un'autenticazione client basata su certificati per una maggiore sicurezza. mTLS non è abilitato per impostazione predefinita e richiede un'autorizzazione preventiva su base individuale. Per configurare mTLS,, procedere come segue:
-
Richiesta di autorizzazione. Create un caso di assistenza per richiedere l'abilitazione di mTLS per il vostro account IBM Cloud.
Dopo che l' mTLS e è stato attivato, non può essere disattivato.
-
Abilitazione mTLS:
- Nella console CIS, fare clic su Sicurezza, quindi selezionare la scheda Mutual TLS.
- Fai clic su Enable.
-
Caricare i certificati di radice:
-
Nella tabella Certificati radice della pagina Mutual TLS, fare clic su Aggiungi per definire un nuovo certificato radice.
-
Incollare il contenuto del certificato nel campo Contenuto del certificato. Fornire un nome per il certificato della CA radice e aggiungere uno o più nomi di dominio completamente qualificati (FQDN) degli endpoint che utilizzeranno questo certificato.
Questi FQDN sono i nomi di host utilizzati dalle risorse protette dal criterio applicativo mTLS. È necessario associare la Root CA all'FQDN utilizzato dall'applicazione protetta.
-
Fare clic su Salva.
Se si utilizza un certificato intermedio, caricare l'intera catena di certificati.
-
-
Creare un criterio di accesso mTLS:
-
Nella tabella dei criteri di accesso MTLS della pagina Mutual TLS, fare clic su Crea per creare un'applicazione di accesso.
-
Selezionare o inserire un hostname che corrisponda a uno degli FQDN associati al certificato radice caricato e fare clic su Crea.
Il criterio di applicazione è preimpostato per utilizzare una decisione di
non_identity
e include una regola che corrisponde a qualsiasi certificato client valido.
-
-
Abilitare l'inoltro del certificato client con l'API:
Per inoltrare i certificati client convalidati al server di origine (utile per la registrazione, la verifica o l'autenticazione back-end), è necessario abilitare l'inoltro.
Il certificato del client viene inoltrato solo con la prima richiesta in ogni connessione mTLS.
Per un esempio di API curl per abilitare l'inoltro dei certificati client, vedere Aggiornamento delle impostazioni dei certificati di accesso API.
Intestazioni del certificato del client inviate al server di origine:
Cf-Client-Cert-Der-Base64
: Base64-encoded Versione DER del certificato del clienteCf-Client-Cert-Sha256
: SHA-256 impronta digitale del certificato client
Per verificare lo stato di inoltro con l'API:
curl -X GET https://api.cis.cloud.ibm.com/v1/crn:v1:bluemix:public:internet-svcs:global:a/<account-id>:<instance-id>::/zones/<zone-id>/access/certificates/settings \ -H 'X-Auth-User-Token: Bearer <IAM-TOKEN>'
-
Creare una regola personalizzata del WAF per bloccare le richieste non autenticate:
Per migliorare la sicurezza, soprattutto per gli endpoint sensibili come i percorsi di accesso o le API, creare una regola WAF per bloccare le richieste che non presentano un certificato client valido.
-
Nella console CIS, tornare alla sezione Sicurezza e selezionare la scheda Regole personalizzate.
-
Fai clic su Crea.
-
Nel pannello laterale Crea regola personalizzata WAF, fare clic su Usa editor di espressioni.
-
Inserire la seguente condizione (aggiornare
hostname
epath
se necessario) nel campo Use Expression Builder.(http.host eq "example.com" and http.request.uri.path eq "/authenticate" and not cf.tls_client_auth.cert_verified)
-
Impostare l'azione su Blocca.
-
Fai clic su Crea.
Questa regola consente l'accesso per l'autenticazione solo se il certificato del client viene verificato con successo. Le richieste senza mTLS o con certificati non validi vengono bloccate.
-
Verifica dell'accesso a mTLS
L'esempio seguente utilizza curl per testare l'autenticazione mTLS effettuando richieste con e senza un certificato client.
-
Tentativo di accesso al sito senza un certificato client.
Questo esempio dimostra l'uso di curl per testare l'accesso a un sito che applica mTLS. Il target URL in questo esempio è
https://auth.example.com
.curl -sv https://auth.example.com
Poiché non è stato fornito alcun certificato client, si prevede che la richiesta fallisca con una risposta
403 Forbidden
. -
Aggiungere il certificato e la chiave privata del client alla richiesta:
curl -sv https://auth.example.com --cert example.pem --key key.pem
Se il client è autenticato correttamente, la risposta include l'intestazione
CF_Authorization Set-Cookie
, che indica il successo dell'autenticazione mTLS.
Convalida mutua TLS
Quando si attiva questo criterio di accesso, utilizzare il seguente flusso di lavoro per convalidare i certificati dei client:
Tutte le richieste all'origine vengono valutate per un certificato client valido.
- Il client avvia la connessione inviando un messaggio
Hello
. - L'applicazione di accesso risponde con un
Hello
e richiede il certificato del client. - Il client invia il proprio certificato per la convalida.
- Il certificato del client viene autenticato rispetto all'autorità di certificazione radice configurata.
- Se si utilizza una catena di certificati, il sistema controlla anche la presenza di certificati scaduti e convalida l'intera catena.
- Se il certificato del client è attendibile, viene generato un JSON Web Token (JWT) firmato per il client che consente di procedere alla richiesta e alle richieste successive.
- Se il client non presenta un certificato valido, il server restituisce una risposta
403 Forbidden
.
Per recuperare i certificati di accesso con l'API, vedere Elenco dei certificati di accesso.