2012-05-18 1 views
2

Я пытаюсь запустить netty на Android. Он отлично работает на планшете Motorola Xoom под управлением 3.2. Но он постоянно терпит неудачу на Samsung Galaxy S и Galaxy Tab, работающих под управлением 2.3.6 и 3.1 соответственно. Трассировка исключения следующая. Кто-то столкнулся с этим раньше .. Любое обходное решение на этом .. спасибо.Netty на Android - InvalidKeyException

Caused by: java.security.InvalidKeyException: The public key in the 
certificate cannot be used for ENCRYPT_MODE 
    at javax.crypto.Cipher.init(Cipher.java:815) 
    at javax.crypto.Cipher.init(Cipher.java:747) 
    at 
org.apache.harmony.xnet.provider.jsse.ClientHandshakeImpl.processServerHelloDone(ClientHandshakeImpl.java: 
418) 

ответ

0

Это должно было быть исправлено в версии 3.0 или более поздней версии: http://code.google.com/p/android/issues/detail?id=12955

на основе номеров строк, которые Вы дали, у вас есть старая версия javax/крипто/Cipher.java. This patch должен исправить это.

Edit:
Если это не исправить, то SSL Engine вероятно, не имеет шифра люкс включен, который совместим с вашим сервером. Вы можете использовать openssl s_client connect или the script given here, чтобы узнать, какие шифры вам нравятся и что им нравится.

2

Это симптомы, согласующиеся с ошибкой в ​​более ранних версиях реализации Android о Cypher где, если сертификат другой стороны имеет флаг расширения KeyUsage установлен в критические и в то же время не включает в себя KeyUsage «DataEncipherment», то реализация Андроида из Cipher Тинкса сертификат недействителен и выбрасывает исключение, которое, по-видимому, не соответствует правильному поведению.

Я нашел здесь работу: http://code.google.com/p/android/issues/detail?id=9307#c180, но затем я улучшил ее и разместил обратно: http://code.google.com/p/android/issues/detail?id=9307#c184. Это наш код работает на Android 2.2. Не откладывайте на кажущуюся нерелевантную тему, на которую указывает эта ссылка.

+0

Ссылка на обходной путь действительно помогла. Благодарю. – MediumOne

+0

Отлично! Ваш подход работает для Android 4.0/4.1. Благодаря! – KNaito