OpenJDK no OpenShift: “NoSuchAlgorithmException: EC AlgorithmParameters não disponível”
Eu estou correndojava.security.NoSuchAlgorithmException: EC AlgorithmParameters not available
com o Wildfly 8.2 (OpenJDK 1.8.0_31) no OpenShift (a exceção é lançada porAmazonHttpClient
)
Parece que há um erro no OpenJDK 1.8 e no ECC:https://bugzilla.redhat.com/show_bug.cgi?id=1167153
Uma das soluções sugeridas requer ediçãojre/lib/security/java.security
desabilitarjdk.tls.disabledAlgorithms=EC,ECDHE,ECDH
. Ou removendojre/lib/ext/sunec.jar
Infelizmente, não consigo fazer isso no OpenShift (faltando permissões).
Qual seria a melhor solução alternativa aqui? Como alternativa, posso alternar para o Oracle JDK (no OpenShift) que não possui esse problema?
ATUALIZAR:
Eu removi o Sun java.security.Provider-s e adicionei o BouncyCastle:
static {
Security.removeProvider("SunEC");
Security.removeProvider("SUN");
Security.removeProvider("SunJSSE");
// ...
Security.addProvider(new BouncyCastleProvider());
}
Infelizmente BouncyCastle estánão um provedor JSSE (crie uma instância SSLContext usando um provedor Bouncy Castle) eSSLContext.getInstance()
falha comNoSuchAlgorithmException: TLS SSLContext not available
.
Também tentei a resposta sugerida por @Rudy De Busscher, embora não seja a favor de definir manualmente a variável env, pois é algo que mais tarde pode ser facilmente esquecido. Em vez disso, adicionei oJAVA_OPTS_EXT
definindo para$OPENSHIFT_DATA_DIR/.my_custom_env
e carregou comsource ${OPENSHIFT_DATA_DIR}.my_custom_env
no.openshift/action_hooks/pre_start
gancho. Não funcionou, mas como eu ainda precisaria usar o BouncyCastle para JSSE, desisti dessa solução.
Felizmente, pude voltar ao OpenJDK 1.7 (via.openshift/markers/java7
) que "resolveu" o problema por enquanto.