Fidarsi di una CA inaffidabile - Posso limitare il modo in cui il sistema si fida?


32

(Pubblicato su ServerFault anziché StackOverflow perché ritengo che riguardi la configurazione del sistema operativo più che il codice di programmazione).

Attualmente sono responsabile della manutenzione di un sistema che si collega a un servizio Web di terze parti. Questo servizio web richiede certificati di autenticazione client, il che è abbastanza equo, ma il servizio web stesso è protetto con un certificato autofirmato creato da un certificato dell'autorità di certificazione radice auto-creato, la stessa radice che crea i certificati di autenticazione client.

Basterebbe semplicemente aggiungere il certificato di servizio corrente all'elenco di fiducia noto e ignorare il certificato di autorità auto-creato, sfortunatamente il certificato di servizio cambia regolarmente, quindi il certificato di autorità deve essere attendibile per garantire che l'applicazione non si interrompa quando il il servizio cert è stato rinnovato.

Tuttavia, non mi fido (personalmente) del certificato CA in base alla mia esperienza con la società che gestisce il servizio Web - non mi sorprenderebbe se fosse trapelato al Web - e preoccupantemente il certificato CA non ha restrizioni sull'uso delle chiavi (mentre gli attacchi MITM esterni sono una possibilità, anche se remota, sono più preoccupato per un certificato trapelato utilizzato per la firma del codice, ad esempio).

È possibile per me dire al mio computer (attualmente una scatola del server, ma nelle caselle client desktop ordinarie future) di fidarmi di una CA ma solo per un determinato set di utilizzi chiave e un piccolo set di possibili nomi-soggetto (nomi-dominio )?

Il server è attualmente Windows Server 2012 R2, ma potrebbe essere in esecuzione su un box Linux, sebbene i computer desktop siano tutti box Windows.


3
Almeno su Linux, molte applicazioni hanno un'opzione per specificare l'ubicazione dei certificati CA peer, quindi è possibile limitare l'ambito di questa CA solo all'applicazione che la utilizza. La risposta di @CryptoGuy funzionerebbe anche su Linux, non c'è nulla di specifico per Windows in esso.
Edheldil

1
@Edheldil: Tuttavia, è specifico per l'implementazione, ad esempio Windows ha supportato i vincoli di nome X.509 per molto più tempo rispetto ad esempio a NSS o GnuTLS.
Grawity

Il tuo sistema si connette a questo servizio di terze parti; il codice client sul tuo sistema può essere configurato in modo da fidarsi della CA di quel servizio, in modo tale da essere fatto solo per quel codice client , non per l'intero sistema?
Castaglia,

@Castaglia Posso scrivere il mio codice di verifica del certificato che funziona indipendentemente dal sistema host, ma ci sono altri software client sui quali non ho il controllo su cui utilizzano i servizi di certificazione a livello di sistema.
Dai,

Risposte:


40

Sì, è possibile. Nel caso di Windows, esiste una funzionalità denominata Certificazione incrociata o subordinazione qualificata.

L'idea è di firmare il certificato CA di emissione di terze parti nel proprio ambiente. Di conseguenza il certificato SSL remoto è incatenato al proprio certificato CA radice. Per proteggersi da possibili certificati non autorizzati, si implementa Name Constraintsun'estensione di certificato in cui si specifica un elenco di nomi accettabili. Se la CA di terze parti emette un certificato per qualsiasi altro nome (non specificato esplicitamente nell'estensione Vincoli nome), verrà automaticamente rifiutato dal provider CryptoAPI.

Oltre ai vincoli di nome, è possibile descrivere il vincolo Utilizzo chiave avanzato definendo l' Application Policiesestensione del certificato nel certificato incrociato. Pertanto, il tuo fornitore di fiducia convaliderà correttamente solo gli usi specificati Application Policiesnell'estensione.

Ulteriori informazioni: Pianificazione e implementazione della certificazione incrociata e subordinazione qualificata mediante Windows Server 2003

ps sebbene l'articolo sia scritto su Windows Server 2003, l'articolo si applica ancora alla versione più recente di Windows Server.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.