2

我们为 iOS 和 Android 开发了一个应用程序,它通过 REST 调用与服务器通信。为了让用户能够首次登录应用程序,他们必须首先下载服务器的 SSL 证书(通过浏览器上的 https 连接或使用 openssl,以 DER 格式下载)并手动将证书加载到文件夹中在设备上(通过将设备连接到计算机并访问其存储)。该应用程序在登录时将检查该文件夹,如果那里有正确的证书,用户将能够登录......任何后续登录,用户都不必再次加载证书。

现在我想知道是否有一种方法可以自动化我上面概述的手动过程?这是一个相当乏味的过程,尤其是对于移动应用程序。

比如连接服务器,直接下载证书到设备……但是这种方式有安全隐患吗?

谢谢

4

1 回答 1

0

尝试这个

HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
            DefaultHttpClient client = new DefaultHttpClient();
            SchemeRegistry registry = new SchemeRegistry();
            SSLSocketFactory socketFactory = SSLSocketFactory
                    .getSocketFactory();
            socketFactory
                    .setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
            registry.register(new Scheme("https", socketFactory, 443));
            SingleClientConnManager mgr = new SingleClientConnManager(
                    client.getParams(), registry);
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient(mgr,
                    client.getParams());
            HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
于 2013-05-03T05:52:20.783 回答