Sto provando a connettere un'API Web Java tramite HTTPS; tuttavia, viene generata un'eccezione:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
Ho seguito questi passaggi che ho imparato da keytool online e tutorial sui certificati SSL:
Ho copiato l'URL HTTPS nel browser, scaricato i certificati SSL e li ho installati nel browser utilizzando Internet Explorer.
Esportati i certificati in un percorso sul mio computer, i certificati sono stati salvati come
.cer
Ha utilizzato l'opzione di importazione di keytool. Il comando seguente è stato eseguito senza errori.
keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
Mi è stata richiesta una password al prompt dei comandi, che ho inserito poi sono stato autenticato.
La
cmd
finestra ha stampato alcuni dati e firme del certificato e mi è stata richiesta la domanda:Fidati di questo certificato?
Ho risposto di sì.
Viene visualizzato il prompt di cmd
Il certificato è stato aggiunto al keystore
Tuttavia, dopo quel messaggio, è stata visualizzata un'altra eccezione:
keytool error: java.io.FileNotFoundException: C:\Program files\...\cacerts <Access Denied>
Alla fine, quando ho controllato il keystore, il certificato SSL non è stato aggiunto e la mia applicazione restituisce la stessa eccezione che stavo ricevendo prima durante il tentativo di connessione:
(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)
keytool
comando esatto che hai eseguito e il suo output? alcuni dei problemi ovvi qui sono il refuso-keystore
dell'argomento e il fatto che keytool non è stato in grado di trovare il keystore in cui importare la chiave