Resumen ejecutivo: ¿cómo instalo un nuevo certificado raíz en Java usando código Java?¿Cómo importo un nuevo certificado de CA de Java sin utilizar la utilidad de línea de comandos de keytool?
Tenemos una aplicación de escritorio que accede a varios servicios web. Recientemente, uno de ellos cambió su certificado SSL a uno firmado por Trustwave. Mientras que los certificados de Trustwave SSL son aceptados por los navegadores habituales de Internet, Java no parece que vienen con los certificados raíz de requisitos previos, y hemos perdido el acceso al servicio web especificada en el mensaje de error siguiente:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Tenemos un temporal indulte al convencer al proveedor para que vuelva a Verisign, pero cuando vuelvan, tenemos que estar listos. Por lo tanto, necesito nuestro software de escritorio para instalar automáticamente el certificado raíz Trustwave según sea necesario. Nuestros clientes no son lo suficientemente conocedores de la tecnología para usar el comando keytool y prefiero no programarlo, ya que eso me parece una solución frágil (implementaciones separadas para Mac y PC, la lucha contra las restricciones de ejecución de Vista, problemas para encontrar el JRE correcto para instalar en , etc.)
Imagino que keytool usa Java internamente. ¿Qué comando podría usar dentro de Java para replicar la funcionalidad de keytool e instalar el certificado raíz de forma programática?
Eso podría funcionar para nosotros. El enlace sugiere una forma de deshabilitar por completo la verificación, que no es exactamente lo que queremos, pero tal vez podría sustituir al TrustManager normal para que haga uno que intente con todos los certificados raíz más uno. Gracias, esto parece prometedor. –