2012-05-18 21 views
2

我試圖在android上運行netty。它在運行3.2的摩托羅拉Xoom平板電腦上運行良好。但它在三星Galaxy S和Galaxy Tab上分別運行2.3.6和3.1時經常失敗。異常跟蹤如下。有人曾經面對過此..任何解決方法在此..謝謝。Android上的Netty - 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) 

回答

2

這與早期版本的Android的實施Cypher其中,如果對方的證書的KeyUsage擴展標誌爲關鍵,並在同一時間不包括密鑰使用「DataEncipherment」,那麼Android的實施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