繁体   English   中英

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

[英]Prompting user to accept self-signed SSL using DefaultHttpClient in Android

我正在开发连接到Microsoft Exchange的Android 4.0应用程序。

目前,我很难处理自签名证书,因为它们只是被拒绝了。 我已经在SO上尝试了许多解决方案,构建了新的SocketFactories和TrustManager,但是没有一个提供真正的解决方案。

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

不幸的是,我发现的唯一示例依赖于使用命令行工具将证书安装到设备上的TrustStore中。 当客户下载时,这无济于事。 我只想要一个简单的接受/拒绝对话框。

我可以盲目地信任所有SSL证书,但是我宁愿做些更安全的事情。

有人能指出我正确的方向吗? 我甚至想做些什么? 如果无法完成接受/拒绝,那么我可以管理的最好的办法就是盲目接受自签名证书。

谢谢汤姆

从android ICS中有KeyChain类 ,您可以在其中存储其他受信任的证书。

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

  1. 创建专用的X509TrustManager以处理未知的服务器证书(请参阅X509TrustManager.checkServerTrusted方法)
  2. 如果服务器证书未知,则创建一个Intent来提示用户使用KeyChain.createInstallIntent()安装证书。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM