No olvides que en la informática un error casi siempre tiene diversas resoluciones, así que aquí te compartimos lo más óptimo y mejor.
Solución:
Tuve este problema y busqué en las profundidades de Google y todavía no pude encontrar la respuesta. Después de algunos días luchando con un código heredado de pésima calidad, encontré la causa de este error.
KeyStore.load(InputStream is, String pass);
este método toma un InputStream y si hay algún problema con dicho InputStream, se lanza esta excepción, algunos problemas que he encontrado:
- El InputStream apunta al archivo incorrecto/en blanco/recién creado
- El InputStream ya está abierto o algo más está reteniendo el recurso
- El flujo de entrada ya fue usado y leídopor lo tanto, la posición del siguiente byte de InputStream es su final
El último fue el responsable de mi problema. El código estaba creando un InputStream a partir de un certificado y procediendo a usarlo en dos llamadas KeyStore.load(), la primera fue exitosa, la segunda siempre me dio este error.
Para otros con un problema similar:
"keystore load: DerInputStream.getLength(): lengthTag=109, too big."
Para mí, la solución fue eliminar el parámetro: -storetype pkcs12
ya que el tipo estándar es jks
Probablemente, el certificado que crea tiene un carácter adicional al final que se malinterpreta como otro certificado. Use una o más líneas en blanco al final.
Consulte: análisis de certificados de Java
Te mostramos las reseñas y valoraciones de los lectores
Recuerda que te brindamos la opción de valorar este tutorial si te fue preciso.