android 安装p12证书,如何在Android中使用p12证书(客户端证书)

android 安装p12证书,如何在Android中使用p12证书(客户端证书)我试图在android中使用客户端证书。我得到了一个.p12文件,我想用它来对服务器进行身份验证。如何在Android中使用p12证书(客户端证书)我正在使用portecle将.p12文件转换为.bks文件,但我似乎没有得到它的工作。下面的代码:packagecom.pa1406.SECURE;importjava.io.InputStream;importjava.security.Ke…

大家好,又见面了,我是你们的朋友全栈君。

我试图在android中使用客户端证书。 我得到了一个.p12文件,我想用它来对服务器进行身份验证。如何在Android中使用p12证书(客户端证书)

我正在使用portecle将.p12文件转换为.bks文件,但我似乎没有得到它的工作。

下面的代码:

package com.pa1406.SECURE;

import java.io.InputStream;

import java.security.KeyStore;

import javax.net.ssl.KeyManagerFactory;

import javax.net.ssl.TrustManagerFactory;

import org.apache.http.conn.ClientConnectionManager;

import org.apache.http.conn.scheme.PlainSocketFactory;

import org.apache.http.conn.scheme.Scheme;

import org.apache.http.conn.scheme.SchemeRegistry;

import org.apache.http.conn.ssl.SSLSocketFactory;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.impl.conn.SingleClientConnManager;

import android.content.Context;

public class HttpsClient extends DefaultHttpClient {

final Context context;

public HttpsClient(Context context) {

this.context = context;

}

@Override protected ClientConnectionManager createClientConnectionManager() {

SchemeRegistry registry = new SchemeRegistry();

registry.register(

new Scheme(“http”, PlainSocketFactory.getSocketFactory(), 80));

registry.register(

new Scheme(“https”,newSslSocketFactory(), 443));

return new SingleClientConnManager(getParams(), registry);

}

private SSLSocketFactory newSslSocketFactory() {

try {

KeyStore truststore = KeyStore.getInstance(“BKS”);

InputStream in = context.getResources().openRawResource(R.raw.keystore);

try {

truststore.load(in, “qwerty1234”.toCharArray());

} finally {

in.close();

}

return new SSLSocketFactory(truststore);

} catch (Exception e) {

throw new AssertionError(e);

}

}

}

我能做些什么来实现这一目标?

UPDATE:

package com.pa1406.SECURE;

import java.io.InputStream;

import java.security.KeyStore;

import javax.net.ssl.KeyManagerFactory;

import javax.net.ssl.SSLContext;

import javax.net.ssl.TrustManagerFactory;

import org.apache.http.conn.ClientConnectionManager;

import org.apache.http.conn.scheme.PlainSocketFactory;

import org.apache.http.conn.scheme.Scheme;

import org.apache.http.conn.scheme.SchemeRegistry;

import org.apache.http.conn.ssl.SSLSocketFactory;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.impl.conn.SingleClientConnManager;

import android.content.Context;

public class HttpsClient extends DefaultHttpClient {

final Context context;

public HttpsClient(Context context) {

this.context = context;

}

@Override protected ClientConnectionManager createClientConnectionManager() {

SchemeRegistry registry = new SchemeRegistry();

registry.register(

new Scheme(“http”, PlainSocketFactory.getSocketFactory(), 80));

registry.register(

new Scheme(“https”,newSslSocketFactory(), 443));

return new SingleClientConnManager(getParams(), registry);

}

private SSLSocketFactory newSslSocketFactory() {

try {

// setup truststore to provide trust for the server certificate

// load truststore certificate

InputStream clientTruststoreIs = context.getResources().openRawResource(R.raw.truststore);

KeyStore trustStore = null;

trustStore = KeyStore.getInstance(“BKS”);

trustStore.load(clientTruststoreIs, “qwerty1234”.toCharArray());

System.out.println(“Loaded server certificates: ” + trustStore.size());

// initialize trust manager factory with the read truststore

TrustManagerFactory trustManagerFactory = null;

trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());

trustManagerFactory.init(trustStore);

// setup client certificate

// load client certificate

InputStream keyStoreStream = context.getResources().openRawResource(R.raw.torbix);

KeyStore keyStore = null;

keyStore = KeyStore.getInstance(“BKS”);

keyStore.load(keyStoreStream, “qwerty1234”.toCharArray());

System.out.println(“Loaded client certificates: ” + keyStore.size());

// initialize key manager factory with the read client certificate

KeyManagerFactory keyManagerFactory = null;

keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());

keyManagerFactory.init(keyStore, “qwerty1234”.toCharArray());

// initialize SSLSocketFactory to use the certificates

SSLSocketFactory socketFactory = null;

socketFactory = new SSLSocketFactory(SSLSocketFactory.TLS, keyStore, “qwerty1234”,

trustStore, null, null);

return socketFactory;

} catch (Exception e) {

throw new AssertionError(e);

}

}

}

2011-11-29

Bewn

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148865.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • intellij IDEA配置tomcat

    intellij IDEA配置tomcatintellijIDEA配置tomcat如果网上流传的方法(即方法2)不能配置成功,点击加号什么都没有的话,请看方法一配置方法。解决问题:intlellijIDEA配置tomcat点击加号没东西。方法一:手动添加tomcat插件然后再导入tomcat路径。步骤1:进入项目之前或者closeproject可以看到如下界面,选择Plugins步骤2.在搜索框输入tomca…

    2022年6月6日
    72
  • pycharm的激活码_通用破解码

    pycharm的激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    59
  • 51单片机学习笔记:合并1602和12864液晶排插接口

    51单片机学习笔记:合并1602和12864液晶排插接口 今天成功合并1602和12864液晶排插接口! 码出来分享下 上面这2个图是1602和12864液晶的排插接口,一般的单片机开发板上都会有仔细观察发现他们的插口大多是相同的, 对于第三脚的对比度调节,1602和12864液晶在硬件上是相反的(1602是低电位方向对比度增强,12864是高电位方向对比度增强),但他们接口位置相同,所以一个10K左右的3脚电位器…

    2022年10月20日
    0
  • goland2021激活码【注册码】

    goland2021激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    59
  • idea激活码永久 吾爱破解_通用破解码

    idea激活码永久 吾爱破解_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    1.5K
  • c++常用头文件和函数_C加加头文件

    c++常用头文件和函数_C加加头文件文章目录常用头文件下的函数介绍:cstring/string.h1.strlen()2.strcmp()3.strcpy()4.strcat()常用头文件下的函数介绍:cstring/string.hC语言提供了很多实用的数学函数,如果要使用,需要在程序开头添加头文件cstring或者string.h。//二者选一#include<cstring>#include<string.h>1.strlen()strlen(str)用于得到字符数组中第一个\0前

    2022年9月3日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号