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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【Spark Streaming】Spark Streaming的使用

    【Spark Streaming】Spark Streaming的使用一、SparkStreaming引入集群监控一般的大型集群和平台,都需要对其进行监控的需求。要针对各种数据库,包括MySQL,HBase等进行监控要针对应用进行监控,例如Tomcat,Nginx,Node.js等要针对硬件的一些指标进行监控,例如CPU,内存,磁盘等SparkStreaming介绍官网:http://spark.apac…

    2022年6月29日
    23
  • 基于51单片机+LD3320语音模块+SYN6288语音合成——语音识别智能分类垃圾桶「建议收藏」

    基于51单片机+LD3320语音模块+SYN6288语音合成——语音识别智能分类垃圾桶「建议收藏」语音识别智能分类垃圾桶基本介绍器件51单片机LD3320语音模块SYN6288语音合成SG90舵机(4个)usb-ttl模块垃圾桶四个(4个)面包板(建议用)实现思路与接线实现流程图接线呈现图代码编写语音模块(部分代码)语音模块串口调试结果51单片机代码(部分代码 )项目展示基本介绍这个一个基于51单片机做的一个语音识别分类智能垃圾桶,通过我们说话来对垃圾词语进行分类。比如:垃圾桶(一级指令)易拉罐(垃圾词语),我们通过说话说出关键字让语音模块接收到——语音模块通过串口发指令给51单片机,针对

    2022年6月26日
    27
  • 招聘 | 深圳市人工智能与机器人研究院AIRS 特种机器人研究中心

    招聘 | 深圳市人工智能与机器人研究院AIRS 特种机器人研究中心

    2020年11月14日
    219
  • 2020-10-24

    2020-10-24产品经理面试习题大汇总凡事“预则立,不预则费”。即使你有丰富的产品经验,在面试那种紧张的环境下要面试好也不是一件易事,因为在那种环境下,你要对面试官提出的问题快速反映,快速组织语言,而你又没有经常训练这种能力,想回答好还是很不容易的,如果你经常背一些产品经理的面试题,那你回答的时候就流畅多了,下面将一些常见的产品经理面试题整理下来,需要的小伙伴拿去。1、介绍一下你自己介绍一下自己的姓名,年龄、毕业院校,工作经历。简单的介绍,保持在三分钟以内,给面试官问问题的时间。工作经历主要讲一些.

    2022年6月20日
    20
  • Deep Learning中的一些Tips详解(RELU+Maxout+Adam+Dropout)「建议收藏」

    Deep Learning中的一些Tips详解(RELU+Maxout+Adam+Dropout)「建议收藏」本文主要讲如果我们的DeepLearning出现了一些不好的结果,我们该怎么去解决。学习前请先参考:反向传播算法(Backpropagation)—-GradientDescent的推导过程。

    2022年4月29日
    59
  • vue、css修改滚动条样式

    vue、css修改滚动条样式vue、css修改滚动条样式样式为/*滚动条*/body*::-webkit-scrollbar{ width:10px; height:10px;}body*::-webkit-scrollbar-track{ background:#fff; border-radius:2px;}body*::-webkit-scrollbar-thumb{ background:rgb(205,206,206); border-radius:10px;}

    2022年8月31日
    8

发表回复

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

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