Lavoro con un client e un server Java che la nostra startup ha recentemente acquisito con un accesso molto limitato agli sviluppatori che lo hanno creato. C'è una documentazione molto limitata. Sembra che il client Java utilizzato per connettersi al proprio server con TLS, c'è una regola del server Nginx per l'endpoint giusto e un certificato e una chiave privata ad esso associati. Tuttavia, lo sviluppatore afferma di non aver bisogno di avere una chiave pubblica presente sul computer che esegue il client Java.
Finora ho appreso che Java memorizza questi certificati attendibili nel file jre/lib/security/cacerts
. Dopo aver installato un certificato autofirmato, ho potuto rendere il client Java connesso al server con crittografia.
Ora la domanda è: in che modo il certificato diventa disponibile per Java? Deve essere installato ogni volta manualmente in cacerts
? O diventerà disponibile in Java dopo aver ottenuto un certificato legale da parte di alcune autorità come Thawte? Per "diventare disponibili" intendo, la lib di HTTP di Java andrà a trovare quel certificato con l'autorizzazione della chiave pubblica? (Non ho familiarità con il modo in cui la verifica CERT funziona con i client senza browser.)
Mi è stato detto dal dev del client e server Java che la chiave pubblica viene scaricata dal server stesso durante la connessione, il che per me non ha senso e tipo di sconfitte lo scopo della sicurezza - se sia la chiave pubblica che la chiave privata proviene dalla stessa fonte, come possiamo fidarci?
Sto imparando molte cose mentre vado (è una startup) e conosco solo la crittografia pubblica in teoria dall'università, ma in pratica sembra un po 'diversa. :) Grazie.