OpenJDK en OpenShift: "NoSuchAlgorithmException: EC AlgorithmParameters no disponible"
Me encuentro conjava.security.NoSuchAlgorithmException: EC AlgorithmParameters not available
con Wildfly 8.2 (OpenJDK 1.8.0_31) en OpenShift (la excepción es lanzada porAmazonHttpClient
)
Parece que hay un error con OpenJDK 1.8 y ECC:https://bugzilla.redhat.com/show_bug.cgi?id=1167153
Una de las soluciones sugeridas requiere ediciónjre/lib/security/java.security
deshabilitarjdk.tls.disabledAlgorithms=EC,ECDHE,ECDH
. O quitandojre/lib/ext/sunec.jar
Lamentablemente, no puedo hacer esto en OpenShift (faltan permisos).
¿Cuál sería la mejor solución aquí? ¿Puedo cambiar alternativamente a Oracle JDK (en OpenShift) que no tiene este problema?
ACTUALIZAR:
Eliminé Sun java.security.Provider-s y agregué BouncyCastle en su lugar:
static {
Security.removeProvider("SunEC");
Security.removeProvider("SUN");
Security.removeProvider("SunJSSE");
// ...
Security.addProvider(new BouncyCastleProvider());
}
Desafortunadamente BouncyCastle esno un proveedor de JSSE (crear una instancia de SSLContext utilizando un proveedor de Bouncy Castle) ySSLContext.getInstance()
falla conNoSuchAlgorithmException: TLS SSLContext not available
.
También probé la respuesta sugerida de @Rudy De Busscher, aunque no estoy a favor de configurar manualmente la variable env, ya que es algo que luego se puede olvidar fácilmente. En cambio, agregué elJAVA_OPTS_EXT
ajuste a$OPENSHIFT_DATA_DIR/.my_custom_env
y lo cargó consource ${OPENSHIFT_DATA_DIR}.my_custom_env
en el.openshift/action_hooks/pre_start
gancho. No funcionó, pero dado que aún necesitaría usar BouncyCastle para JSSE, he renunciado a esta solución.
Afortunadamente pude volver a OpenJDK 1.7 (a través de.openshift/markers/java7
) que "resolvió" el problema por ahora.