Bra*_*tos 14 ssl https android
我正在尝试使用HttpsURLConnection我自己的信任管理器设置SSL(使用SSL恢复).
我只能进行ssl握手和连接.没有SSL恢复 - 之前的会话永远不会被重用!
我搜索了一遍,但没有运气.所有答案都是指HttpClient(不是一个选项).
我的设置如下:
我创建了一个SSL上下文,我将其存储供以后使用.
然后我使用这个SSL上下文创建一个SSL工厂,我也存储它以便与所有连接一起使用.
我开始一切顺利的连接:我收到一个sessionID,完成握手完成并将连接发送到服务器.
sessionID我之前的情况.我打印SSLContext的会话 - 最后一个会话仍在那里并且有效.由于某种原因,此新连接不使用它,因此会创建另一个会话并将其添加到会话的缓存中.我在两个不同的设备上尝试了Android版本2.3和4.1.
在许多谷歌搜索结果之后,我甚至试图像一些用户提议的那样添加Keep-Alive,以及导致没有不同结果的其他伏都教.
有没有人碰到这个?有什么我想念的吗?
什么可能导致我的连接不使用上一个会话?
提前致谢!
你想做的是reflection用来覆盖课堂上android.net.SSLCertificateSocketFactory的成员,成员是:
HOSTNAME_VERIFIERmTrustManagersmKeyManagers通过上课来做到这一点:
Class<?> sslClass = Class.forName("android.net.SSLCertificateSocketFactory");
Field classField = sslClass.getDeclaredField("defaultTrustManager");
classField.setAccessible(true);
classField.set(null /*If Feild is static*/, youObjectHere /*Needs casting*/);
classField.set(objectInstance /*If Feild is not static*/, youObjectHere /*Needs casting*/);
Run Code Online (Sandbox Code Playgroud)
然后:
用你自己的变量覆盖这些.这将允许Android API 14及更高版本的SSL恢复(我在14上测试过).
您需要维护此代码并跟上Google可能执行的任何更改.
希望它有所帮助!祝好运!
| 归档时间: |
|
| 查看次数: |
599 次 |
| 最近记录: |