2

我在让证书在 android 下运行时遇到了很大的问题。我有一个连接到 WCF 服务的 android 客户端。

我认为问题是,证书没有被转移。我收到一条错误消息:403 禁止(在响应中)。我真的希望你能帮助我。=> 在我的安卓客户端

在 Internet Explorer 中,它工作得很好 => 状态 200

我发现这篇文章: http ://android-developers.blogspot.de/2012/03/unifying-key-store-access-in-ics.html

“私钥的常见用途是用于 SSL 客户端身份验证。这可以通过使用带有自定义 X509KeyManager 的 HttpsURLConnection 来实现,该自定义 X509KeyManager 返回从 KeyChain API 检索的 PrivateKey。ICS 的开源电子邮件应用程序使用带有 X509ExtendedKeyManager 的 KeyChain。了解更多信息,请查看源代码(在 SSLUtils.java 中)。”

我已经检查了 SSLUtils 类,我正在尝试使用它。

这是一些代码:

private void setHttpsAdvanced() {
    HostAuth ht = new HostAuth();
    ht.mPort = 443;
    ht.mClientCertAlias = "jensZert";

    HttpParams params = getHttpParams();
    MyThreadSafeClientConnManager ccm = MyThreadSafeClientConnManager
            .newInstance(params, true, 443);

    try {
        MyThreadSafeClientConnManager.makeScheme(true, false,    
                          ht.mClientCertAlias);

        ccm.registerClientCert(getApplicationContext(), ht);
        // checkCertificate(ht.mClientCertAlias);

    } catch (CertificateException e) {
        Log.d(TAG, e.getMessage());
        e.printStackTrace();
    }

    this.httpclient = new DefaultHttpClient(ccm, params);

    connectionInfo = this.getConnectionInfo();

    this.url = String.format("%1$s://%2$s/%3$s/%4$s",
            connectionInfo.Protocol, connectionInfo.ServerName,
            connectionInfo.WebserviceName, connectionInfo.Path);

    httpGet = new HttpGet(url);
}


private String callTheWebserviceCertificate() {
    this.setupClient();
    String result = "";

    HttpResponse response = null;
    try {
        response = (HttpResponse) this.httpclient.execute(httpGet);
        result = EntityUtils.toString(response.getEntity());

    } catch (ClientProtocolException e) {

        e.printStackTrace();
    } catch (IOException e) {

        result = e.getMessage() + "\n";

        for (StackTraceElement el : e.getStackTrace()) {
            result += el.toString() + "\n";
        }

        Log.d(TAG, result);
    }
    return result;
}

问候,詹斯

4

0 回答 0