【问题标题】:android - https with server having self-signed certificateandroid - https 与具有自签名证书的服务器
【发布时间】:2014-06-18 13:02:57
【问题描述】:

我正在使用不受信任的证书关注 android 的 https 教程。见here

他们提供了 CA 不受信任时的场景示例代码。我的服务器上有自签名证书的场景。所以我不知道我在他们的示例代码中用什么替换了以下内容:

InputStream caInput = new BufferedInputStream(new FileInputStream("load-der.crt"));

// I can't figure out where to get my crt from ? 
// I don't have access to that path directly from a URL

对于自签名证书,他们说:

You can create your own TrustManager, this time trusting 
the server certificate directly.

我是否已单独获取服务器的自签名证书? API 会不会以某种方式自动为我获取这些信息?

【问题讨论】:

    标签: android ssl


    【解决方案1】:

    我是否有单独获得服务器的自签名证书?

    我不知道在这种情况下“单独”是什么意思,但您需要包含自签名证书的密钥库以进行验证。

    API 不会以某种方式自动为我获取这些信息吗?

    怎么可能?验证证书的目的是确认它确实是正确的,并且您的用户不是中间人攻击的受害者。要为自签名证书执行此操作,我们需要相关详细信息来进行验证。

    FWIW,如果你觉得这些东西设置起来有点复杂,我在 my CWAC-Security library 中有 a TrustManagerBuilder 可以提供一些帮助。

    【讨论】:

    【解决方案2】:

    如果你有服务器证书,如果该证书是自签名的,那么你应该将公钥证书添加到系统的信任存储中,否则它不会被信任并导致与信任相关的异常 您应该提取证书(从服务器证书中提取公钥证书)并需要替换 load-der.crt, 然后运行链接中提供的示例。

    莫汉库马尔

    【讨论】:

      猜你喜欢
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 2016-07-10
      • 2016-07-17
      • 1970-01-01
      • 2013-11-09
      • 2021-02-26
      相关资源
      最近更新 更多