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


相关推荐

  • SqlSessionFactory介绍[通俗易懂]

    SqlSessionFactory介绍[通俗易懂]SqlSessionFactory是MyBatis的关键对象,它是单个数据库映射关系经过编译后的内存镜像。SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来获得,而SqlSessionFactoryBuildr则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例。每一个MyB…

    2022年5月2日
    38
  • chrome谷歌浏览器怎么清除指定网站cookie

    chrome谷歌浏览器怎么清除指定网站cookie

    2021年10月15日
    77
  • java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)

    java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)

    2021年12月10日
    39
  • 汇编介绍

    汇编介绍汇编大多是指汇编语言,汇编程序。把汇编语言翻译成机器语言的过程称为汇编。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序…

    2022年10月13日
    3
  • 浏览器安装为知笔记插件(chrome浏览器)

    浏览器安装为知笔记插件(chrome浏览器)1.下载并安装驱动 wiz.cn/zh-cn/downloads-webclipper.html2.我选择的谷歌浏览器,因为不好翻墙,这里选择手动安装3.下载会得到一个crx文件。注意这里按照官方文档去添加到扩展程序会失败。我们要把这个文件后缀名改为.zip形式并解压,得到文件夹。注意:是直接将.crx改成.zip!!不是自己压缩成的4.接着,打开谷歌的“更多工具”…

    2022年8月18日
    37
  • 查看Linux内核版本_查看ubuntu内核

    查看Linux内核版本_查看ubuntu内核一、查看Linux内核版本命令(两种方法):1、cat/proc/version[root@S-CentOShome]#cat/proc/versionLinuxversion2.6.32-431.el6.x86_64(mockbuild@c6b8.bsys.dev.centos.org)(gccversion4.4.720120313(RedHat4.4.7-4)(GCC))#1SMPFriNov2203:15:09UTC20132、u

    2022年10月13日
    3

发表回复

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

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