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)
fuente
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 enRespuestas:
Esto podría suceder si no está ejecutando el símbolo del sistema en modo administrador. Si está utilizando Windows 7, puede ir a ejecutar, escribir cmd y presionar Ctrl + Shift + enter. Esto abrirá el símbolo del sistema en modo administrador. Si no, también puede ir a Inicio -> todos los programas -> accesorios -> haga clic con el botón derecho en el símbolo del sistema y haga clic en "Ejecutar como administrador".
fuente
Tuve el mismo problema en Windows y pude resolverlo ejecutando cmd.exe como administrador (haga clic con el botón derecho en el menú de inicio y luego "Ejecutar como administrador).
fuente
Estaba teniendo el mismo problema al importar el certificado en el almacén de claves local. Cada vez que emito el comando keytool recibo el siguiente error.
El certificado se agregó al error keytool del almacén de claves: java.io.FileNotFoundException: C: \ Program Files \ Java \ jdk1.8.0_151 \ jre \ lib \ security (acceso denegado)
La siguiente solución me funciona.
1) asegúrese de ejecutar el símbolo del sistema en Rus como modo Administrador
2) Cambie su directorio actual a% JAVA_HOME% \ jre \ lib \ security
3) luego emita el siguiente comando
keytool -import -alias "mycertificatedemo" -file "C: \ Users \ name \ Downloads \ abc.crt" -ceystore cacerts
3) dar la contraseña changeit
4) ingrese y
5) verá el siguiente mensaje sobre "El certificado se agregó al almacén de claves"
Asegúrese de dar los " cacerts " solo en el valor de parámetro -keystore, ya que estaba dando la ruta completa como "C **: \ Archivos de programa \ Java \ jdk1.8.0_151 \ jre \ lib \ security **".
Espero que esto funcione
fuente
Verifique los permisos de escritura en el almacén de claves.
fuente
Para los usuarios de Mac, asegúrese de sudo y, cuando se le solicite, proporcione primero su contraseña de administrador, que será seguida por la contraseña del almacén de claves, que normalmente debería ser "changeit" a menos que realmente la haya cambiado.
fuente
Si está utilizando windows8:
command prompt
command prompt
clic derecho y clicRun as administrator
. Luego ejecute el comando keytool.fuente
Puede otorgarse permisos para solucionar este problema.
Haga clic con el botón derecho en cacerts> elija propiedades> seleccione la pestaña Seguridad> Permitir todos los permisos a todos los nombres de grupo y usuario.
Esto funcionó para mí.
fuente
Incluso ejecuté el símbolo del sistema como Administrador, pero no funcionó para mí con el siguiente error.
Si la ruta de acceso a la herramienta de claves no está en las rutas de su sistema, deberá usar la ruta completa para usar la herramienta de claves, que es
Entonces, el comando debería ser como
Eso funcionó para mí.
fuente
También recibí este error, incluso ejecuté cmd como administrador.
La causa raíz es: El archivo es de VCS (subversión, rendimiento, etc.), y cuando verifiqué las propiedades de este archivo, sus 'Atributos son de solo lectura .
Entonces la solución es:
fuente
RESUELTO
fuente
Puede almacenar más disco o ruta (no C) EX: D \
fuente