如何在 Android 上进行 SSL 会话恢复

Posted

技术标签:

【中文标题】如何在 Android 上进行 SSL 会话恢复【英文标题】:how to make SSL Session Resumption on Android 【发布时间】:2011-12-03 23:20:25 【问题描述】:

我每 30 秒与服务器建立一次 SSL 连接,并且无法忍受 SSL 握手的开销,这需要将近 6K。我想要做的是使用 SSL 会话恢复(让我的客户端使用在上一个会话中从服务器收到的 SID)

我读过这篇文章: Reusing SSL Sessions in android with HttpClient 但是删除 registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); 行的神奇解决方案 只是对我不起作用(当客户端没有发送会话 id 时,我在 Wireshark 中看到它)即使它有一个。

有没有更好的在安卓上使用 SSLSessionCache / SSLCertificateSocketFactory 的例子? 谢谢

【问题讨论】:

尝试将端口号改为443 ***.com/questions/7105681/… 这个链接可能对你有帮助 Dharmendra:感谢您的回答,但这不是我想要的......我不是在问如何进行 httpget 或 post,而是如何使 ssl 会话恢复 我没有测试,但我认为会话缓存的关键是 createSocket(Socket s, String host, int port, boolean autoClose) 的 (host,port),其中主机和端口实际上可以是完全不同的主机和套接字端口。 我知道有点晚了...我有类似的问题***.com/q/15946228/194609 但您是否尝试检查这是否适用于您的浏览器?如果没有,那么您的服务器可能未配置为保存 ssl 会话 【参考方案1】:

Dpes 使用更长的存活时间有帮助吗?

mHttpClient.setKeepAliveStrategy(new ConnectionKeepAliveStrategy()  
    @Override 
    public long getKeepAliveDuration(HttpResponse response, HttpContext context)  
        return 60 * 1000;
     
); 

【讨论】:

以上是关于如何在 Android 上进行 SSL 会话恢复的主要内容,如果未能解决你的问题,请参考以下文章

使用 HttpClient 在 Android 中重用 SSL 会话

如何:使用 Parse 在 Xamarin.Android 应用程序上进行 Facebook 单点登录 (SSO)?

让 pyOpenSSL 客户端使用 SSL 会话恢复

FFH如何在鸿蒙系统上进行抓包测试

如何指定要在 SSL 会话中使用的密码套件

XING - 如何在 iOS 上的 Android 上进行深度链接?