In che modo il cliente sceglie il certificato corretto dall'archivio dei certificati?

5

Dato che sono in grado di configurare il mio SQL Server e il client per stabilire una connessione SSL, Ho installato il certificato sul server e sul computer client (archivio Autorità di certificazione fonti attendibili).

Se ho un solo certificato su server e client, funziona perfettamente.

Ora la mia domanda.

Se ho più certificati su entrambe le macchine, ho bisogno di allegare il certificato al server SQL che voglio usare, ma non sto dicendo al mio cliente quale certificato utilizzare. Quindi, in che modo il client sceglie il certificato corretto dal proprio negozio per l'handshaking con SQL Server?

Esegue il ciclo di tutti i certificati dal proprio archivio e ottiene quello corrispondente al certificato di SQL Server?

In che modo il client identifica il certificato corretto (generalmente scambia le chiavi pubbliche dal certificato) dal suo negozio?

C'è un modo per configurare il client per utilizzare il certificato XXXX per il certificato SQL Server 1 e YYYY per SQL Server 2?

    
posta Nihal Kumar 19.07.2016 - 04:21
fonte

1 risposta

4

Il server invia il suo certificato durante TLS handshake  e il client verifica il suo percorso di fiducia.

Nel primo passaggio il client corrisponde al campo del nome comune (CN) con il nome host del server (non confronta i certificati).

Quindi il client verifica il percorso di fiducia, ovvero se il certificato presentato dal server è firmato da un'entità il cui certificato si trova nell'archivio dei certificati radice attendibili (di nuovo: non corrisponde direttamente al certificato)

  • se si utilizza un certificato autofirmato e lo si aggiunge all'archivio, la verifica viene eseguita correttamente quando il certificato del server si trova nello stesso archivio;
  • se si utilizza una CA (autofirmata), la verifica ha esito positivo, quando si firma il certificato di CA è nell'archivio attendibile del client.

Does it loop through all the certificates from its store and get the one matching with the SQL Server's certificate?

Ricordare che il client non sta tentando di abbinare i due certificati (inviati dal server e memorizzati sul client), ma per verificare il certificato utilizzato per firmare il certificato inviato.

Per quanto riguarda il processo stesso, puoi pensarlo in questo modo, ma se esso controlla il percorso di fiducia eseguendo il looping di tutte le voci o utilizza un indice per accelerare il processo, è un dettaglio di implementazione che non interessa realmente utente.

Is there any way to configure the client to use XXXX certificate for the SQL Server 1 and YYYY certificate for the SQL Server 2?

Il client verificherà la fiducia del certificato inviato dal server durante la fase di handshake. In modo efficace saranno diversi per SQL Server 1 e SQL Server 2 e funzioneranno come descritto senza alcuna configurazione aggiuntiva.

Come sidenote, non dovresti gestirlo davvero aggiungendo un certificato autofirmato per ogni server separatamente, ma crea una CA e firma i certificati di sever usando questo. Quindi distribuisci un solo certificato CA a tutti i client.

    
risposta data 19.07.2016 - 04:50
fonte

Leggi altre domande sui tag