Attualmente sto sviluppando un prodotto che coinvolge due situazioni di rete. Sul lato client, più computer formano una rete P2P (più sedi, più reti p2p) e un sottoinsieme di nodi di ciascuna rete stabilisce una connessione con un sottoinsieme di server che ospitiamo (per scambi di dati, aggiornamenti). Tutti i server e i client hanno certificati, firmati con un certificato CA.
Il mio problema ora è l'aggiornamento delle CA (intermedie). Non posso garantire un aggiornamento simultaneo di tutte le macchine contemporaneamente (anche per i failover, un tempo di transizione sarebbe apprezzato), e quindi ci deve essere un periodo di tempo in cui sono validi più certificati CA, una versione legacy che si esaurirà in non -il tempo trascurabile e una versione aggiornata per sostituirlo.
Poiché il client attende con la sua autenticazione fino a quando non ha ricevuto il certificato del server, può reagire a una CA obsoleta e inviare la propria catena di certificati legacy, e poiché la connessione nelle reti p2p verrà tentata in entrambi i modi, posso ignora il caso in cui un client legacy incontra un server aggiornato e aspetta solo che accada il contrario.
Ma questo non funziona per i server centrali, perché i client potrebbero nascondersi dietro un NAT Layer, anche a me sembrerebbe brutto girare la connessione in un vero modello client-server. Lavorare con il certificato precedente fino al giorno x senza offrire una transizione fluida mi sembra rischioso.
Quindi ecco finalmente la domanda, è possibile che un server SSL offra un certificato fallback nel caso in cui la CA corrente (intermedia) sia sconosciuta dal client.
Ho due idee per soluzioni alternative (in caso di errore, ricorda l'IP del client e invii un certificato diverso al tentativo, oppure esegui il servizio su porte diverse con certificati diversi), ma poiché l'aggiornamento delle CA è una cosa reale, suppongo che sii la soluzione migliore.
Per favore mi illumini.