Tengo una aplicación Java que ha funcionado bien hasta hace poco. Comenzó a generar la excepción: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Tengo algunas versiones de esta aplicación. Para compilar y ejecutar: algunos usan el Java 8 que está en mi ruta, otros usan una referencia específica a un Java 11 que tengo y otros usan un Red Hat Java 11 integrado... Cada uno usa una copia del almacén de claves PKCS12. Entonces, supongamos que este archivo no está dañado.
¡Todo dejó de funcionar repentinamente con la excepción anterior!
Para hacer las cosas más frustrantes, simular las llamadas API fallidas en la misma máquina, ¡el uso de Postman funciona bien!
Si importa, las aplicaciones java usan un almacén de claves PKCS12, que fue generado por keytool a partir de archivos crt+key (que son los que usa Postman)
¿Alguna idea de qué está pasando? Tenía una actualización de Java alineada, actualicé (1.8.0_261 ahora) y reinicié, sigue siendo el mismo problema ...
Actualización: el administrador compartió conmigo los certificados de servidor antiguos y nuevos (¿no está seguro de que puedan hacerlo?). Pude ver algunos cambios menores. Especialmente interesante se ve el emisor:
Antiguo: DigiCert SHA2 Secure Server CA, DigiCert Inc
Nuevo: DigiCert TLS RSA SHA256 2020 CA1, DigiCert Inc
¿Supongo que es un caso de un nuevo emisor en el que Java no confía? ¿Y podría solucionar esto editando mi archivo cacerts?
Me encantaría arrojar un poco de luz sobre esto. Entonces, tengo un sentimiento de comprensión, por favor :)