2

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

目前,我在处理自签名证书时遇到了困难,因为它们只是被拒绝了。我在 SO 上尝试了很多解决方案,构建了新的 SocketFactories 和 TrustManagers,但它们都没有提供真正的解决方案。

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

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

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

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

谢谢,汤姆

4

1 回答 1

1

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

你的软件可以做这样的事情:

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

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

于 2013-11-14T09:41:49.517 回答