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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mybatis interceptor原理_mybatis拦截器获取表名

    mybatis interceptor原理_mybatis拦截器获取表名看了很多博客文章和,mybatis的拦截器概念还是不能很好理解,可能是因为自己基础不好或者理解方式和他人不同吧,所以决定自己花时间好好捋捋,然后把理解后的总结记录下来,供他人参考,也许你们的理解和我也不同,但是不妨花几分钟时间看看,说不定能帮助你文章主要是讲解org.apache.ibatis.plugin包下的Interceptor类和org.apache.ibatis….

  • 阻容降压电路[通俗易懂]

    阻容降压电路[通俗易懂]阻容降压电路(适合于小功率小电流负载)示例分析:下图中,C1为降压电容,一般为0.33-3.3uF。在此设为C1=2uF,整流管的导通电阻通常为几欧姆,稳压管VS的动态电阻为10欧姆左右,限流电阻R1及负载电阻RL一般为100-200欧姆,滤波电容一般为100uF-1000uF,其容抗可忽略。因此,可将图1电路等效为图2的交流电路,且满足容抗XC1>R的条件。电容C1的容抗XC1…

  • vector的几种初始化及赋值方式

    vector的几种初始化及赋值方式vector的几种初始化及赋值方式

  • 千锋重庆IT学习之微信API接口文档

    千锋重庆IT学习之微信API接口文档微信​​API接口文档​​,微信API接口,个人微信聊天接口api微信手机客户端上传的通知类消息1.手机客户端微信上线通知WeChatOnlineNotice=1020;2.手机客户端微信下线通知WeChatOfflineNotice=1021;3.微信个人号新增好友通知FriendAddNotice=1022;4.微信个人号移除好友通知FriendDelNotice=1023;5.微信好友发来聊天消息FriendTalkNotice=1024;6.任务执行结果通

  • 几个免费的国外php空间「建议收藏」

    几个免费的国外php空间「建议收藏」2019独角兽企业重金招聘Python工程师标准>>>…

  • 华为 eNSP 模拟器安装教程(内含下载地址)[通俗易懂]

    华为 eNSP 模拟器安装教程(内含下载地址)[通俗易懂]本文指导大家在Windows操作系统上完成华为eNSP模拟器的安装

发表回复

您的电子邮箱地址不会被公开。

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