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