android - Android 上的 Netty - InvalidKeyException

标签 android netty

我正在尝试在 Android 上运行 netty。它在运行 3.2 的 Motorola Xoom 平板电脑上运行良好。但它在分别运行 2.3.6 和 3.1 的 Samsung Galaxy S 和 Galaxy Tab 上不断失败。异常跟踪如下。有人之前遇到过这个问题吗?有任何解决方法吗?谢谢。

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) 

最佳答案

这与 Android 早期版本的 Cypher 实现中的错误一致,其中如果其他方的证书将 KeyUsage 扩展标志设置为 Critical 并且同时不包含 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 上运行。不要被此链接指向的看似不相关的主题所困扰。

关于android - Android 上的 Netty - InvalidKeyException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10651663/

相关文章:

android - Android 应用程序中的音频控制

android - 不要从浏览器打开自定义链接

java - HTTP组件、ReSTLet、Apache Mina和Netty的区别

Android布局按钮在水平线性布局中低于其他按钮

android - 具有从 URI 解析的 json 的多级 ExpandableListView

iphone - 使用 div 元素或按钮元素 [iPhone] [在 android 中] 哪个更好?

java - AsyncHttpClient 是否知道为所有 HTTP 请求分配多少线程

java - Netty发布后资源仍然泄漏

java - (不是)Netty 调用 System.gc()

java - Netty中的缓冲区损坏