В принципе, что вам нужно сделать, чтобы сделать ECC доступным на Java 6, является добавление дополнительного провайдера, который поддерживает ECC. Без уплаты денег, у вас есть два варианта:
- Солнце PKCS # 11 поставщика
- Bouncy Castle поставщик
Для варианта 1 вам потребуется родной PKCS # 11 библиотека, которую я предполагаю, что вы не иметь. И вариант 2, вероятно, лучший выбор в любом случае, потому что PKCS # 11 фактически предназначен для ключей в смарт-картах или HSM. Но только для записи, если кто-то хочет идти таким образом, вот описание того, как это сделать (часть NSS не имеет значения): How to export ECC key and Cert from NSS DB and import into JKS keystore and Oracle Wallet
Вариант 2 требует, чтобы хранилище ключей было одного из типов, которые являются предоставляемый замком Bouncy (либо BKS, либо UBER), и для этого необходимо установить провайдера Bouncy Castle.
Для установки провайдера следуйте этим инструкциям: Provider Installation. Возможно, необходимо добавить поставщика BC до стандартного поставщика SSL (com.sun.net.ssl.internal.ssl.Provider), но я не уверен в этом.
После этого вы можете импортировать ключ в хранилище ключей BKS с помощью команды Keytool вы использовали ранее со следующими изменениями:
-storetype BKS
вместо -storetype JKS
-providerclass org.bouncycastle.jce.provider.BouncyCastleProvider
В качестве альтернативы вы можете использовать KeyStore Explorer для преобразования хранилища ключей из JKS в BKS (если вы используете KSE с Java 7).
Чтобы использовать хранилище ключей BKS для SSL необходимо добавить еще одно свойство системы:
System.setProperty("javax.net.ssl.keyStoreType", "BKS");
Это должно быть, но, честно говоря, я бы рекомендовал либо переключиться на Java 7 или ключей RSA.
FYI, stackoverflow ethiquette - не изменять ответ на вопрос. Вместо этого, примите ответ @ omikron или опубликуйте свое разрешение как отдельный ответ. – Brian