Sono necessari certificati digitali validi sui client (Java, C ++ ecc.) Per stabilire connessioni https corrette?

StackOverflow https://stackoverflow.com/questions/1001078

  •  05-07-2019
  •  | 
  •  

Domanda

Sto pianificando di implementare un piccolo programma autonomo che farà una richiesta https a un server. Ciò richiede un certificato SSL valido nel client? Come funziona l'handshake SSL in quel caso? Ci sono problemi di sicurezza nel client che non hanno un certificato SSL?

È stato utile?

Soluzione

Oltre a crittografare il traffico di rete, HTTPS viene normalmente utilizzato per autenticare il server. Cioè, per fornire ai clienti informazioni rassicuranti su chi possiede il server, ecc. Perché ciò funzioni, il cliente deve ispezionare la catena di fiducia nel certificato pubblicato dal server. Perché ciò avvenga automaticamente, sul computer client dovrebbe essere installato un certificato che descrive un'autorità di certificazione che ha emesso il certificato del server. Normalmente tali certificati si trovano sulla macchina in un negozio chiamato " Autorità di certificazione radice attendibili " e la maggior parte dei sistemi operativi viene fornita con una serie di CA comuni già installate.

Inoltre, molti server Web offrono una funzionalità in cui il client può autenticarsi sul server fornendo un certificato client. Il web server è in grado di ispezionare il certificato proveniente dal client e mapparlo su una serie di autorizzazioni sul server. Questa " autenticazione client " non è necessario per una sessione HTTPS funzionante, tuttavia è solo un'opzione.

In breve, in realtà non è necessario alcun certificato sul client, ma probabilmente si desidera disporre di un certificato CA radice per convalidare l'identità del server . Se non disponi di quel certificato, ti sarà impossibile fidarti del server (a meno che tu non abbia un altro buon motivo per farlo), ma potresti comunque scegliere di scambiare dati con esso.

Altri suggerimenti

Se desideri saperne di più sull'handshake HTTPS e su ciò che viene negoziato, ti consiglio vivamente di guardare questo eccellente articolo su moserware

http://www.moserware.com /2009/06/first-few-milliseconds-of-https.html

Un certificato client è richiesto solo se il server ne richiede uno. Un certificato client consente al server di autenticare il client, ma ciò è utile solo se il server ha un elenco di tutti i client autorizzati. Questo non è generalmente il caso di un server Web, quindi è abbastanza raro che richiedano certificati client.

Se presente, il certificato lato client non influisce sulla creazione del canale sicuro. (Per questo è richiesto solo il certificato del server e l'aggiunta di un certificato client nel mix non cambia il processo.) Una volta stabilito un canale sicuro, il server utilizzerà il certificato del client per autenticare il client (generalmente confrontando il pubblico del client chiave o nome con un elenco di clienti autorizzati).

Non è necessario un certificato per stabilire una connessione HTTPS, ma è necessario se si desidera sapere con chi si sta comunicando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top