Un certificato SSL per autenticazione client e server?

1

Se ho un certificato che ha gli usi:

  • Autenticazione server (1.3.6.1.5.5.7.3.1)
  • Autenticazione client (1.3.6.1.5.5.7.3.2)

È possibile che se un client accede al server e sia stata inviata una copia del certificato che potrebbero usare quel certificato come autorizzazione del client?

Ho un'applicazione web che ha un certificato con autenticazione server e client.

Il server non blocca l'accesso del client all'URL. Il cliente può accedere al link . Quando il client accede al link deve essere bloccato. Questo è configurato in quell'app. In questo caso l'app sta lasciando entrare il client con l'installazione esplicita di quel certificato sul computer client.

Sto cercando di capire se questo è perché il client ha precedentemente effettuato l'accesso all'URL di root e ha stabilito una connessione SSL.

Potrebbe essere possibile?

    
posta Alzoid 20.04.2016 - 18:20
fonte

2 risposte

4

Attenzione alla terminologia. I certificati si riferiscono alla crittografia asimmetrica in cui le chiavi vanno in coppia: ogni coppia contiene una chiave pubblica e una chiave privata , che sono due aspetti della stesso oggetto matematico sottostante (che dipende dal tipo di algoritmo). Fondamentalmente, la chiave privata non può essere calcolata dalla chiave pubblica, che è esattamente il motivo per cui la chiave pubblica può essere resa pubblica.

Il certificato contiene la chiave pubblica - solo la chiave pubblica. Quando un client SSL si connette a un server SSL, il server invia il suo certificato al client, ma certamente non la chiave privata corrispondente. Invece, il server utilizza la sua chiave privata per eseguire un'operazione che solo il server può eseguire (poiché tale operazione richiede la chiave privata e la chiave privata è privata).

Allo stesso modo, quando un client SSL si connette a un server SSL e il server richiede un "certificato client", significa in realtà che il client invierà il proprio certificato (con la chiave pubblica del client) e dimostrerà la sua padronanza della chiave privata corrispondente eseguendo un'operazione che può essere eseguita solo con la chiave privata (ma può essere verificata con la chiave pubblica); questa è una firma .

Nel tuo scenario previsto, un client C si connette a un primo server S 1 e S < sub> 1 invia a C una copia del suo certificato. Quindi C si connette a un secondo server S 2 che richiede un "certificato client". C può inviare il certificato ricevuto da S 1 , ma non andrà lontano perché C non non ha accesso alla chiave privata corrispondente: quella chiave non ha mai lasciato il server S 1 , il client non ha accesso ad esso. Pertanto, C non sarà in grado di completare l'autenticazione con il server S 2 .

I contrassegni extra esatti nel certificato (autorizzazione client, autenticazione server ...) sono solo restrizioni supplementari sull'utilizzo dei certificati, ma non sono la base della sicurezza crittografica qui. Ciò che importa è che un certificato contenga solo una chiave pubblica, non la chiave privata corrispondente.

    
risposta data 20.04.2016 - 18:59
fonte
0

La mia comprensione della domanda è che si chiede se il client può utilizzare il certificato dei server per l'autenticazione con il server, perché il client ha ottenuto questo certificato all'interno dell'handshake TLS con il server. Se questa comprensione è corretta, la risposta è NO perché:

  • Viene inviato solo il certificato all'interno dell'handshake TLS, ma non la chiave privata corrispondente al certificato. Questa chiave è tenuta segreta dal server. Ma solo la parte che conosce la chiave segreta corrispondente può identificare / autenticarsi usando un certificato.
  • Anche se il client conosce in qualche modo la chiave privata per il certificato dei server, il server probabilmente non lo accetterà per l'autenticazione perché il server si aspetta che il client sia identificato come client e non come server, cioè soggetti diversi nel certificato.
risposta data 20.04.2016 - 19:00
fonte

Leggi altre domande sui tag