è possibile utilizzare un certificato x.509 solo per l'autenticazione dell'utente?

0

abbiamo uno scenario per implementare SSO usando i certificati x.509. Un client sicuro scaricherà un certificato x.509 (solo certificato ... nessuna chiave privata è disponibile) sui log degli utenti nel computer Windows. D'ora in poi per tutte le applicazioni Web, vorremmo leggere questo certificato per autenticare l'utente. quando abbiamo provato a leggere i certificati del browser (configurando tomcat per richiedere il certificato client), in grado di leggere solo i certificati con chiave privata. non è in grado di leggere il certificato x.509 presentato dal client sicuro.

Qualcuno può aiutarmi a leggere il certificato x.509 dal lato server? Oppure solo i certificati con chiave privata da soli potrebbero essere utilizzati per questo scopo?

    
posta user997811 01.04.2014 - 06:07
fonte

2 risposte

1

Ciò che descrivi è impraticabile.

Senza riscrivere l'implementazione SSL sul client e sul server, il client deve avere la chiave privata per lo scambio. L'autenticazione deriva dall'uso dell'identificatore CN per l'utente, quindi per i server Web contiene il nome IP del server. Per l'autenticazione degli indirizzi email, il CN contiene ADDR_SPEC. Quello che metti nella tua CN dipende da te.

C'è un'ulteriore complicazione nel metodo proposto: l'utente deve installare il certificato, anche se questo non è terribilmente complesso.

Non è possibile impedire a un sito Web di terzi di temere i dettagli del certificato client se l'utente accede a quel sito (ISR che è possibile limitare l'uso dei certificati client a siti specifici, ma non ricordare le specifiche ). Ma non riescono a vedere la chiave privata (tramite le connessioni SSL / TLS).

La tua insistenza nel non fornire la chiave privata al client rende impossibile l'utilizzo dei certificati client.

    
risposta data 01.04.2014 - 11:42
fonte
0

No, o almeno, non per qualsiasi meccanismo di autenticazione utente robusto . (Certo, il certificato quasi sicuramente contiene più entropia di una tipica password utente, ma non è questo il punto qui.)

Senza una chiave, le operazioni di decrittografia e firma non possono essere eseguite, queste sono fondamentali per X.509.

Un'analogia potrebbe renderlo più chiaro: rispetto a un nome utente e al metodo di autenticazione segreto condiviso , il certificato è analogo al username, e la chiave analoga al segreto. (Sto usando un segreto condiviso come esempio, non una password, perché il segreto condiviso non viene trasferito come parte dell'autenticazione, entrambe le parti dimostrano di conoscere lo stesso segreto piuttosto che sfocare una password per il confronto; con TLS il neanche le chiavi private vengono trasferite).

Questa è davvero una semplificazione eccessiva, tuttavia, la magia di un sistema asimmetrico come RSA significa che non c'è nemmeno un segreto condiviso (più precisamente, nessun segreto condiviso in anticipo, uno è negoziato per connessione per la crittografia simmetrica ). In TLS con un certificato client , il server garantisce che il client sia in possesso della chiave richiedendo che il client invia una firma dei messaggi di handshake TLS che il server verificherà. Nessuna chiave significa nessuna firma e la configurazione TLS fallirà.

    
risposta data 01.04.2014 - 11:48
fonte

Leggi altre domande sui tag