无效/自签名证书上类似浏览器的行为

时间:2013-07-13 21:26:01

标签: android ssl ssl-certificate certificate-store

感觉我已经搜索了整个网络,但我发现的所有内容都是关于如何自动接受无效或自签名证书的提示。 (使用自定义HttpClientSSLSocketFactory - 我已经开始工作了。)

但我想要的是我的应用程序是用户获得类似浏览器的对话框,询问“你真的想要信任这个服务器吗?在这里,看看它的证书。” (但仅当默认检查不信任证书时。)

然后证书应该放在应用程序的证书存储区中,以便下次自动接受。

所以我需要知道的是:

  • 如何下载特定主机/端口组合的证书(链)(以便能够向用户显示)?
  • 如何以某种方式存储证书,以便我可以在KeyStore以后加载它?

这是我在app中计划的工作流程:

  1. 使用我的自定义HttpClient向服务器发送请求。也许证书是系统信任的,或者已经存放在我的商店中(如果是,请转到4)。
  2. 如果请求因SSL问题而失败,请向用户显示证书并询问是否信任此连接。
  3. 如果用户选择信任,请将证书存储在我的商店中并转到1.
  4. Hooray,连接已准备好使用。
  5. 所以谁知道怎么做?

1 个答案:

答案 0 :(得分:0)

尝试连接到非CA证书时,请勿禁用CA检查并捕获异常。当您捕获异常时,启动您的页面以供用户接受/拒绝。如果他接受,则启动一个禁用CA检查的新连接。