Mutual TLS (mTLS) è un protocollo standard di settore per l'autenticazione reciproca tra un client e un server. Il protocollo mTLS assicura che il client e il server, a ciascuna estremità di una connessione di rete, siano quelli che dichiarano di essere verificando che entrambi possiedano la chiave privata associata al certificato client.
Che cos'è un certificato client?
Un certificato client, chiamato anche certificato Transport Layer Security (TLS), è un file contenente informazioni importanti per la verifica dell'identità di un dispositivo. Le informazioni del certificato includono la chiave pubblica, una dichiarazione relativa a chi ha emesso il certificato (i certificati possono essere emessi da autorità di certificazione o autofirmati) e la data di scadenza del certificato.
In che modo le API di Google convalidano l'identità del dispositivo
Il protocollo TLS utilizza una tecnica chiamata infrastruttura a chiave pubblica (PKI), che si basa su una coppia di chiavi asimmetriche: una chiave pubblica e una chiave privata. Tutto ciò che è criptato con la chiave privata può essere decriptato solo con la chiave pubblica. Le API Google Cloud utilizzano il protocollo TLS per verificare l'identità di un dispositivo decriptando il messaggio criptato dalla chiave privata con la chiave pubblica del certificato durante l'handshake mTLS. La decrittografia riuscita dimostra il possesso della chiave privata, che è disponibile solo su dispositivi attendibili.
Per abilitare l'handshake e la procedura di convalida mTLS, un client deve:
Stabilisci una connessione mTLS con le API di Google utilizzando endpoint API specifici per mTLS. Gli endpoint specifici per mTLS hanno il seguente formato:
[service].mtls.googleapis.com
Rileva e utilizza il certificato del dispositivo durante l'handshake mTLS. Se utilizzi la verifica degli endpoint per il deployment dei certificati, questo tipo di certificato viene rilevato e utilizzato automaticamente dai client supportati.
Il seguente diagramma illustra l'handshake mTLS tra un client e un server API di Google: