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

fer*_*ero 6 ssl android ssl-certificate certificate-store

这种感觉就像我找遍了整个网络了,但所有我发现是关于如何提示接受无效或自签名证书自动.(使用自定义HttpClientSSLSocketFactory- 我已经有了工作.)

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

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

所以我需要知道的是:

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

这是我在应用程序中计划的工作流程:

  1. 使用我的自定义向服务器发送请求HttpClient.也许证书是系统信任的,或者已经存储在我的商店中(如果是,请转到4).
  2. 如果请求因SSL问题而失败,请向用户显示证书并询问是否信任此连接.
  3. 如果用户选择信任,请将证书存储在我的商店中并转到1.
  4. 万岁,连接即可使用.

所以谁知道怎么做?

Jua*_*edo 0

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