Estoy tratando de conectar una API web Java a través de HTTPS; sin embargo, se lanza una excepción:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
Seguí estos pasos que aprendí de los tutoriales en línea de keytool y cert SSL:
Copié la URL HTTPS en el navegador, descargué los certificados SSL y los instalé en el navegador usando Internet Explorer.
Exporté los certificados a una ruta en mi computadora, los certificados se guardaron como
.cer
Usó la opción de importación de keytool. El siguiente comando se ejecuta sin ningún error.
keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
Se me solicitó una contraseña en el símbolo del sistema, que ingresé y luego me autentiqué.
La
cmd
ventana imprimió algunos datos y firmas de certificados y me preguntaron:¿Confía en este certificado?
Yo respondí que sí.
Se muestra el indicador de cmd
El certificado fue agregado al almacén de claves
Sin embargo, después de ese mensaje, se mostró otra excepción:
keytool error: java.io.FileNotFoundException: C:\Program files\...\cacerts <Access Denied>
Finalmente, cuando verifiqué el almacén de claves, el certificado SSL no se agregó y mi aplicación ofrece la misma excepción que recibí antes al intentar conectarme:
(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)
keytool
comando exacto que ha ejecutado y su salida? algunas de las cuestiones obvias aquí son el typo del-keystore
argumento, y el hecho de que la herramienta de claves fue incapaz de encontrar el almacén de claves para importar la llave en