OpenJDK в OpenShift: «NoSuchAlgorithmException: параметры алгоритма EC недоступны»
Я сталкиваюсь сjava.security.NoSuchAlgorithmException: EC AlgorithmParameters not available
с Wildfly 8.2 (OpenJDK 1.8.0_31) в OpenShift (исключение выдаетсяAmazonHttpClient
).
Похоже, что есть ошибка с OpenJDK 1.8 и ECC:https://bugzilla.redhat.com/show_bug.cgi?id=1167153
Один из предложенных обходных путей требует редактированияjre/lib/security/java.security
отключитьjdk.tls.disabledAlgorithms=EC,ECDHE,ECDH
, Или удалениеjre/lib/ext/sunec.jar
К сожалению, я не могу сделать это в OpenShift (отсутствуют разрешения).
Какой будет лучший обходной путь здесь? Могу ли я альтернативно переключиться на Oracle JDK (в OpenShift), у которого нет этой проблемы?
ОБНОВИТЬ:
Я удалил Sun java.security.Provider-s и добавил вместо него BouncyCastle:
static {
Security.removeProvider("SunEC");
Security.removeProvider("SUN");
Security.removeProvider("SunJSSE");
// ...
Security.addProvider(new BouncyCastleProvider());
}
К сожалению, BouncyCastleне провайдер JSSE (создать экземпляр SSLContext с помощью поставщика Bouncy Castle) а такжеSSLContext.getInstance()
не удается сNoSuchAlgorithmException: TLS SSLContext not available
.
Я также попробовал @Rudy De Busscher предложенный ответ, хотя я не одобряю ручную настройку переменной env, так как позже это можно легко забыть. Вместо этого я добавилJAVA_OPTS_EXT
установка на$OPENSHIFT_DATA_DIR/.my_custom_env
и загрузил егоsource ${OPENSHIFT_DATA_DIR}.my_custom_env
в.openshift/action_hooks/pre_start
крюк. Это не сработало, но так как мне все еще нужно было использовать BouncyCastle для JSSE, я отказался от этого решения.
К счастью, я смог вернуться к OpenJDK 1.7 (через.openshift/markers/java7
) которая "решила" проблему на данный момент.