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

Android 无效/自签名证书上类似浏览器的行为,android,ssl,ssl-certificate,certificate-store,Android,Ssl,Ssl Certificate,Certificate Store,感觉好像我已经搜索了整个web,但我找到的只是关于如何自动接受无效或自签名证书的提示。(使用定制的HttpClient和SSLSocketFactory——我已经开始工作了。) 但我想让我的应用程序出现一个类似浏览器的对话框,询问“你真的想信任这台服务器吗?在这里,看看它的证书。”(但只有在默认检查不信任证书的情况下) 然后证书应该放在应用程序的证书存储中,以便下次自动接受 所以我需要知道的是: 如何下载特定主机/端口组合的证书(链)(以便能够向用户显示) 如何以某种方式存储证书,以便稍后将其

感觉好像我已经搜索了整个web,但我找到的只是关于如何自动接受无效或自签名证书的提示。(使用定制的
HttpClient
SSLSocketFactory
——我已经开始工作了。)

但我想让我的应用程序出现一个类似浏览器的对话框,询问“你真的想信任这台服务器吗?在这里,看看它的证书。”(但只有在默认检查不信任证书的情况下)

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

所以我需要知道的是:

  • 如何下载特定主机/端口组合的证书(链)(以便能够向用户显示)
  • 如何以某种方式存储证书,以便稍后将其加载到
    密钥库中
这是我在应用程序中的计划工作流程:

  • 使用我的自定义
    HttpClient
    向服务器发送请求。可能证书受系统信任或已在我的存储中(如果是,请转到4)
  • 如果请求由于SSL问题而失败,请向用户显示证书并询问是否信任此连接
  • 如果用户选择信任,请将证书存储在my store中,然后转到1
  • 万岁,连接已准备好使用

  • 所以有人知道怎么做吗?

    在尝试连接到非CA证书时,不要禁用CA检查并捕获异常。捕获异常后,启动页面,让用户接受/拒绝。如果他接受,然后启动一个新的连接,并禁用CA检查。

    哇,你真的是对的,你在谷歌上能找到的就是如何禁用CA检查。谢谢你的回答。现在,我不再做这个项目了。一旦我恢复工作,我会回到你的答案上来。