In SSL / TLS il server dovrebbe mostrare il suo certificato come parte di una catena. In teoria, il server dovrebbe assicurarsi che la catena inviata sia corretta e il client è "moralmente autorizzato" a rifiutare la connessione se la catena esatta inviata dal server non riesce a convalidare. Tuttavia, i clienti sono consentiti a compiere ulteriori sforzi; se possono convalidare il certificato con un'altra catena, allora è OK continuare.
Pertanto, non è possibile incolpare formalmente alcuni client per non aver convalidato il certificato del server se il server invia una catena imperfetta.
Quando un client tenta di creare una catena alternativa, utilizzerà alcuni o tutti i seguenti metodi:
- Il client potrebbe avere certificati CA intermedi installati localmente (nel sistema Windows, l'archivio "CA intermedio" è pensato per quello).
- I certificati inviati dal server possono essere riutilizzati (ma forse non nello stesso ordine).
- Il client può avere accesso ad alcuni server LDAP o equivalenti in cui alcuni certificati possono essere cercati per nome soggetto (ciò può accadere nelle impostazioni di Windows / Active Directory). Il piano iniziale per X.509 era che ci dovrebbe essere una Directory mondiale, come una sorta di DNS generalizzato, ma non è mai successo.
- Il client può provare a scaricare altri certificati CA intermedi seguendo l'URL trovato in Accesso alle informazioni dell'autorità estensioni dei certificati.
Questo ultimo metodo è ciò che di solito funziona. Un certificato ben rilasciato conterrà un'estensione AIA con un URL che punta al certificato per la CA che lo ha rilasciato. Questo certificato può contenere un'estensione AIA che punta alla CA di livello superiore e così via, fino alla radice. Fintanto che tutti gli URL sono accessibili pubblicamente, la rete è attiva e in esecuzione, e nessun amministratore di sistema è entrato nella sua patetica scusa perché una mente possa bloccare quel meccanismo (l'ho visto sfortunatamente), quindi la catena sarà ricostruita con successo. I moderni sistemi Windows lo fanno automaticamente.
Ma ricorda che i client SSL permessi non si comportano in questo modo. Un punto importante da notare è che il seguente URL si basa su HTTP. Un browser Web conosce HTTP; questa è una caratteristica fondamentale di un browser. Tuttavia, un'applicazione stand-alone che utilizza una libreria SSL potrebbe non essere in grado di emettere una richiesta HTTP casuale, o anche semplicemente disposti a farlo. Alcune librerie SSL forniscono il supporto del protocollo ma si basano sul chiamante per fornire effettivamente la connettività di rete (il chiamante apre e gestisce la connessione TCP, la libreria è puramente sul lato computazionale delle cose). A seconda di come è progettata l'applicazione e della sua implementazione SSL, potresti o non riuscire a spingere i certificati aggiuntivi laddove necessario.
È molto meglio se il server è installato correttamente in primo luogo.