Android - 已安装证书但如何使用它进行连接?

Android - installed certificate but how use it for connection?

我安装了证书(用户),我需要用它来连接服务器。我需要做更多的事情才能将其用于安全连接吗?

通过将证书复制到特定于应用程序的存储来导入证书。

设置包含证书的自定义 KeyStore,然后使用它创建自定义 SSLContext。

一旦我们引用了包含客户端证书和证书密码的文件,我们就会将其加载到适当的密钥库中。

keyStore = KeyStore.getInstance("PKCS12");
fis = new FileInputStream(certificateFile);<br>keyStore.load(fis, clientCertPassword.toCharArray());

现在我们有了包含客户端证书的 KeyStore,我们可以用它来构建 SSLContext:

KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509");
kmf.init(keyStore, clientCertPassword.toCharArray());
KeyManager[] keyManagers = kmf.getKeyManagers();
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManagers, null, null);

然后可以将 SSLContext 与 HTTPUrlConnection 一起使用以连接到服务器:

String result = null;
HttpURLConnection urlConnection = null;

try {
    URL requestedUrl = new URL(url);
    urlConnection = (HttpURLConnection) requestedUrl.openConnection();
    if(urlConnection instanceof HttpsURLConnection) {
        ((HttpsURLConnection)urlConnection)
             .setSSLSocketFactory(sslContext.getSocketFactory());
    }
    urlConnection.setRequestMethod("GET");
    urlConnection.setConnectTimeout(1500);
    urlConnection.setReadTimeout(1500);
    lastResponseCode = urlConnection.getResponseCode();
    result = IOUtil.readFully(urlConnection.getInputStream());
    lastContentType = urlConnection.getContentType();
} catch(Exception ex) {
    result = ex.toString();
} finally {
    if(urlConnection != null) {
        urlConnection.disconnect();
    }
}

http://chariotsolutions.com/blog/post/https-with-client-certificates-on/