La mia azienda sta lanciando un servizio SaaS basato su cloud. Ci saranno clienti di diversi inquilini che si connettono ai nostri servizi tramite SSL reciproco.
I client userebbero una libreria fornita da noi per connettersi al servizio. Questa libreria basata su Java eseguirà SSL reciproco utilizzando keystore e truststores. Quindi sia il server che i clienti sono sotto il nostro controllo. Per sottolineare, non ci sono browser coinvolti nell'intera comunicazione.
Per poter eseguire correttamente l'autenticazione SSL reciproca, è necessario affidarsi a un certificato fornito dal nostro servizio cloud. Questo certificato potrebbe essere:
- Un certificato CA pubblico (come Comodo, Verisign ecc.). Ma chiedere ai clienti di fidarsi di una CA pubblica consentirebbe la possibilità di un uomo in attacchi centrali dato che qualcun altro può utilizzare un certificato diverso firmato dalla stessa CA per ingannare i clienti.
- CA radice privata di nostra proprietà. Ciò implicherebbe la creazione del nostro servizio PKI e la sicurezza della chiave privata et al. La nostra situazione giustifica la scelta di questa via?
- Certificato autofirmato utilizzato da server e client. Un problema che vedo con questa soluzione è che quando il certificato scade, tutti i client attraverso i tenant dovranno riconfigurare il nuovo certificato allo stesso tempo . Sarebbe inaccettabile.
Un'altra opzione che ho trovato è quella di utilizzare una sorta di blocco SSL (certificato o chiave pubblica) che sostituirà la catena di fiducia. Questa non è una soluzione facile da implementare.
Qual è la soluzione consigliata?