【问题标题】:Setting up an HTTPS connection on Android with a self signed certificate from an AWS server使用来自 AWS 服务器的自签名证书在 Android 上设置 HTTPS 连接
【发布时间】:2016-03-01 23:20:12
【问题描述】:

我正在与一个 Android 应用程序的团队合作,并被分配了设置用户登录和注册页面的任务。在设置我的服务器类以使用 HttpsURLConnection 类发布后,我收到了 SSLHandshakeException 错误。

HttpsURL连接代码
HttpsURLConnection connection = (HttpsURLConnection) new URL(spec.toString()).openConnection();

经过一些研究,我意识到这是因为 Android 不信任我们的服务器,因为它是自签名的。我正在尝试从 Android 开发网站关注此 documentation,但不明白如何获取 crt 文件。我使用的是 AWS 服务器,但我不是设置自签名证书的人,但我确实拥有对服务器的完全访问权限。

来自 Android Docs(如何获取 load-der.crt 文件?)

// Load CAs from an InputStream
// (could be from a resource or ByteArrayInputStream or ...)
CertificateFactory cf = CertificateFactory.getInstance("X.509");
// From https://www.washington.edu/itconnect/security/ca/load-der.crt
InputStream caInput = new BufferedInputStream(new FileInputStream("load-der.crt"));
Certificate ca;

【问题讨论】:

  • 无法再访问washington.edu 的网址。
  • 您是自己创建的证书还是由网络管理员或后端提供的。

标签: android ssl amazon-web-services ssl-certificate self-signed


【解决方案1】:

这就是我获得证书的方式,尽管这个答案可能对其他人没有太大帮助。我问了服务器管理员,他给了我。我相信他在通过 SSH 连接到服务器时从一些 bash 代码生成了证书。然后我在main 中创建了一个assets 文件夹并将证书文件放在那里。我用这行代码InputStream in = context.getAssets().open("my_cert.crt")得到了输入流。

【讨论】:

    猜你喜欢
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    相关资源
    最近更新 更多