Android安全通信:JSSE还是Apache Http?

Android安全通信:JSSE还是Apache Http?,android,Android,在使用Windows上的自定义信任库实现基于JSSE的HttpsURLConnection时遇到各种各样的问题后,我遇到了一些无法得到答案的问题:(Android应用程序仍然无法工作) Android 4.0是否仍然只支持密钥库和信任库的BKS格式(而不是JKS)?我的Windows应用程序使用JKS 在Android平台上使用JSSE或ApacheHttp进行安全TLS通信是否更好?(我的Windows应用程序使用JSSE HttpsURLConnection和friends) 在我开始努力让

在使用Windows上的自定义信任库实现基于JSSE的HttpsURLConnection时遇到各种各样的问题后,我遇到了一些无法得到答案的问题:(Android应用程序仍然无法工作)

  • Android 4.0是否仍然只支持密钥库和信任库的BKS格式(而不是JKS)?我的Windows应用程序使用JKS

  • 在Android平台上使用JSSE或ApacheHttp进行安全TLS通信是否更好?(我的Windows应用程序使用JSSE HttpsURLConnection和friends)


  • 在我开始努力让定制的信任商店在Android上运行之前,我想知道使用JSSE是否走错了路。当然,这两种API都可用是有原因的!再说一次,也许不是。

    Android系统信任存储已在ICS中扩展,现在允许您安装受信任的证书。执行此操作后,默认情况下,
    TrustManager
    将拾取它们,
    HttpClient
    HttpsUrlConnection
    都可以正常工作,无需自定义存储。更多细节。JKS格式是专有的,很可能不受支持

    ApacheHttpClient更灵活,API更具表现力,但Android团队表示,从现在起,他们只会改进
    HttpConnection
    。因此,对于较新的平台,如果您能够接受API,那么这可能是您的选择。顺便说一句,在Android上,两者都使用基于本机OpenSSL代码的相同JSSE实现。然而,证书验证是用Java完成的,并且主要基于BouncyCastle代码

    更新:有关如何使用HttpClient和HttpsURLConnection执行此操作的一些示例代码:

    相关博文:


    这篇文章很好地总结了不同之处:这是一篇很棒的文章;我不知道Android上的truststore实现如此残废。随着ICS提供的巨大改进,似乎仍然无法执行以下任一操作:1。创建一个仅由应用程序使用的应用程序信任库(这在JSSE Java实现中是可能的)[应用程序只关心与有限的一组服务器的安全通信,在本例中,是用于健康数据的WAN接收器]2。让应用程序(apk)向可变信任库添加证书。这些可能包括自签名证书。尽管这篇文章很棒,但我不得不承认我对Android JSSE缺乏灵活性感到失望。甚至在4.0之前也是可能的:只需创建一个BKS密钥库,并用它初始化套接字工厂(这是在ICS之前使用自定义CA证书的唯一方法)。2.可以在ICS中使用新的密钥库API,如下所示:
    Intent-Intent=KeyChain.createInstallIntent();意向.额外(钥匙链.额外证书,证书);星触觉(意向)用户当然必须对此进行授权。(也有一篇关于这方面的文章,包括github上的一些示例代码);我想我需要做更多的工作。在Windows(纯Java)上,我所要做的就是设置一个属性以使用自定义信任库。我仍然可以使用默认的信任库和密钥库管理器。很明显,这在Android上是不可能的(即使这个systemProps.put(“javax.net.debug”,“SSL”);在Android上也不起作用!)我将阅读其余所有与安全相关的文章。我已经在谷歌上搜索了好几天,想得到这些信息,但都找不到。外面有很多混乱!你的文章是救命稻草。谢谢