error certpathvalidatorexception cert cacerts java security ssl

certpathvalidatorexception - Java y SSL-java.security.NoSuchAlgorithmException



ssl android (1)

Creé un programa Java como interfaz para una base de datos en un servidor, y estoy tratando de usar SSL para encriptar el tráfico entre los clientes y el servidor. Aquí está el comando que emití para crear el certificado del servidor:

keytool -genkey -alias localhost -keyalg RSA -keypass kpass123 -storepass kpass123 -keystore keystore.jks

Aquí está el código relevante:

System.setProperty("javax.net.ssl.keyStore", "G:/Data/Android_Project/keystore.jks"); System.setProperty("javax.net.ssl.keyPassword", "kpass123"); SSLServerSocketFactory factory = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault(); SSLServerSocket accessSocket = (SSLServerSocket)factory.createServerSocket(DB_ACCESS_PORT);

Cuando intento ejecutar esto, capto esto:

java.security.NoSuchAlgorithmException: error al construir implementación (algoritmo: Predeterminado, proveedor: SunJSSE, clase: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)

También encontré que el servicio "KeyPairGenerator" tiene algoritmos DIFFIEHELLMAN, DSA, RSA disponibles, mientras que "SSLContext" tiene algoritmos SSL, TLS, SSLV3, DEFAULT, TLSV1.

¿Debo encontrar alguna forma de instalar RSA en el servicio SSLContext? ¿Estoy mirando los servicios correctos? ¿No debería estar usando RSA?

Soy nuevo en todo lo de SSL - Seguridad - Certificados, y me sorprende que cada uno de estos diferentes servicios no tengan los mismos algoritmos cuando se supone que deben acceder a los mismos certificados.


Pruebe javax.net.ssl.keyStorePassword lugar de javax.net.ssl.keyPassword : este último no se menciona en la guía de referencia de JSSE .

Los algoritmos que menciona deben estar allí de forma predeterminada utilizando los proveedores de seguridad predeterminados. NoSuchAlgorithmException son a menudo NoSuchAlgorithmException por otras excepciones subyacentes (archivo no encontrado, contraseña incorrecta, tipo de almacén de claves incorrecto, ...). Es útil mirar el seguimiento completo de la pila.

También puede usar -Djavax.net.debug=ssl , o al menos -Djavax.net.debug=ssl,keymanager , para obtener más información de depuración, si la información en el seguimiento de la pila no es suficiente.