【问题标题】:Android - installed certificate but how use it for connection?Android - 已安装证书但如何使用它进行连接?
【发布时间】:2017-05-02 03:13:57
【问题描述】:

我安装了证书(用户),我需要用它来连接服务器。我需要做更多的事情来使用它来实现安全连接吗?

【问题讨论】:

    标签: android https certificate


    【解决方案1】:

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

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

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

    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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-05
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多