使用来自AWS服务器的自签名证书在Android上设置HTTPS连接

时间:2015-11-27 18:02:39

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

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

HttpsURLConnection Code
HttpsURLConnection connection = (HttpsURLConnection) new URL(spec.toString()).openConnection();

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

来自Android文档(如何获取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;

1 个答案:

答案 0 :(得分:0)

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