在Android中使用DefaultHttpClient提示用户接受自签名SSL

在Android中使用DefaultHttpClient提示用户接受自签名SSL,android,http,ssl,Android,Http,Ssl,我正在开发一个安卓4.0应用程序,可以连接到Microsoft Exchange 目前,我很难处理自签名证书,因为它们刚刚被拒绝。我已经尝试了很多解决方案,建立了新的SocketFactory和TrustManager,但并没有一个能提供真正的解决方案 理想情况下,我希望提示用户通知他们SSL证书无法验证,如果他们接受,我希望下载正在提供的证书,存储它并将其用于下一次连接。或者类似于此过程的内容(如Firefox的SSL例外列表) 不幸的是,我发现的唯一示例依赖于使用命令行工具将证书安装到设备上

我正在开发一个安卓4.0应用程序,可以连接到Microsoft Exchange

目前,我很难处理自签名证书,因为它们刚刚被拒绝。我已经尝试了很多解决方案,建立了新的SocketFactory和TrustManager,但并没有一个能提供真正的解决方案

理想情况下,我希望提示用户通知他们SSL证书无法验证,如果他们接受,我希望下载正在提供的证书,存储它并将其用于下一次连接。或者类似于此过程的内容(如Firefox的SSL例外列表)

不幸的是,我发现的唯一示例依赖于使用命令行工具将证书安装到设备上的信任库中。当客户下载它时,这没有帮助。我只需要一个简单的接受/拒绝对话框

我可以盲目地信任所有SSL证书,但我宁愿做一些稍微安全一点的事情

有人能给我指出正确的方向吗?我想做的可能吗?如果不能接受/拒绝,那么盲目接受自签名证书是我能管理的最好方式

谢谢,
Tom

在android ICS中,您可以在其中存储额外的可信证书

您的软件可以执行以下操作:

  • 创建专用证书以处理未知服务器证书(请参阅方法)
  • 当服务器证书未知时,创建一个意图,以提示用户使用安装证书

  • 证书应可用于将来的连接。

    谢谢。你的方法与我刚找到的一篇博文一致-。我现在正在尝试。我使用setKeyEntry()将来自不受信任链的证书直接添加到密钥库。这是现在工作的一种享受!谢谢。