我是在Mac(JDK 1.6) 环境下生成的,Windows  也应该通用;

首先要从CA那里申请来签名的证书,我的是crt格式的;

然后使用如下命令,对应的BcProvider 是 bcprov-ext-jdk15on-146.jar ,放在 JDK 的lib 里面,其他版本貌似不可以.

keytool -import -alias 别名 -file 证书文件.crt -keystore 新建的BKS.keystore -storepass 密码 -storetype BKS -providername "BC"

真样就会在我的当前命令行目录生成一个keystore文件,密码是命令中指定的.

然后这个keystore 就可以放入Android 项目的res/raw 目录下了.

使用代码:

public class HTTPS {
public static DefaultHttpClient httpclient;
static HttpClient hc;
static boolean isInit = false; //初始化
public synchronized static void initKey(Context ctx) {
hc = new DefaultHttpClient();
KeyStore trustStore;
try {
trustStore = KeyStore.getInstance("BKS");
trustStore.load(ctx.getResources().openRawResource(R.raw.anyKeystore), "password".toCharArray()); SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);
//不进行域名验证
socketFactory.setHostnameVerifier(new X509HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
@Override
public void verify(String arg0, SSLSocket arg1)
throws IOException {
}
@Override
public void verify(String arg0, X509Certificate arg1)
throws SSLException {
}
@Override
public void verify(String arg0, String[] arg1, String[] arg2)
throws SSLException {
}
}); Scheme sch = new Scheme("https", socketFactory, 8443);
hc.getConnectionManager().getSchemeRegistry().register(sch);
} catch (Exception e) {
e.printStackTrace();
} } public static String getData(String url) { HttpUriRequest hr = new HttpGet(url);
HttpParams httpparams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpparams, Utils.timeOut);
HttpConnectionParams.setSoTimeout(httpparams, 15000); hr.setParams(httpparams); HttpResponse hres = null;
StringBuffer sb = null;
try {
hres = hc.execute(hr);
HttpEntity he = hres.getEntity();
InputStream is = he.getContent();
sb = new StringBuffer();
byte[] bytes = new byte[1024];
for (int len = 0; (len = is.read(bytes)) != -1;) {
sb.append(new String(bytes, 0, len, "utf-8"));
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
System.out.println(sb.toString());
return sb.toString();
} public static String getData(String url,Context ctx) { if(!isInit){
initKey(ctx);
} HttpUriRequest hr = new HttpGet(url);
HttpResponse hres = null;
StringBuffer sb = null;
try {
hres = hc.execute(hr);
HttpEntity he = hres.getEntity();
InputStream is = he.getContent();
sb = new StringBuffer();
byte[] bytes = new byte[1024];
for (int len = 0; (len = is.read(bytes)) != -1;) {
sb.append(new String(bytes, 0, len, "utf-8"));
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
return sb.toString();
}
}

在应用启动的时候init 一下就行了,以后直接使用HTTPS.getData(); 获取数据

keytool 生成 Android SSL 使用的 BKS的更多相关文章

  1. 使用JDK的keytool生成Android签名证书

    生成证书:keytool -genkey -alias [yourapp] -keyalg RSA -validity 20000 -keystore [yourapp].keystore 输入key ...

  2. JDK自带工具keytool生成ssl证书

    前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl证书来使用https以保证数据安全. 百度了不少资料,看到JAVA的JDK自带生成SSL证书的工具: ...

  3. 使用keytool生成ssl证书

    使用keytool生成ssl证书 在项目中由于要使用https访问项目,然后了解到jdk有一个自带的工具keytool可以用来生成ssl证书,从而可以通过https进行访问. 使用keytool生成s ...

  4. cmd命令生成android签名证书

    cmd命令生成android签名证书,有空在写一篇eclipse导出带签名的apk,这里面包括生成新的签名.现在还是讲讲在cmd怎么操作生成签名证书. 1.dos下进入JDK的bin目录 运行如下命令 ...

  5. 使用jdk的keytool 生成CA证书的方法

    一.CA证书生成设置总共分为以下5步: 步骤: 1.根据java的keytool生成CA根证书,放在服务器 2.根据服务器CA根证书导出客户端证书 3.tomcat增加SSL配置 4.客户端IE浏览器 ...

  6. Tomcat服务器配置https双向认证(使用keytool生成证书)

    一,HTTPS原理   1,HTTP.HTTPS.SSL.TLS介绍与相互关系 (1)HTTP:平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的(明文),因此使用HTTP协议传输隐私 ...

  7. 利用JDK自带工具keyTool生成安全证书

    前言:说一下最近做的工作,主要利用iText给网页中生成好的html报表转化为pdf格式的文件,并且在其中加入水印,数字签名等等,这部分主要介绍安全证书的目的就是为了做数字签名部分用的. 下面利用jd ...

  8. JAVA调用 keytool 生成keystore 和 cer 证书

    keytool是一个Java数据证书的管理工具, keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里, 包含两种数据: 密钥实体( ...

  9. 用ticons指令结合ImageMagickDisplay工具批量生成Android适应图片

    用ticons指令结合ImageMagickDisplay工具批量生成Android适应图片 ticons的用法可以百度 这里记录下具体的编译方法 在安装了ticons和ImageMagickDisp ...

随机推荐

  1. 5.6.3.8 fromCharCode()方法

    String构造函数本身还有一个静态方法:fromCharCode().这个方法的任务是接收一或多个字符编码,然后将它们转换成一个字符.从本质上来看,这个方法与实例方法charCodeAt()执行的是 ...

  2. 用wfastcgi在IIS下部署Django&Flask

    Django跟Flask在Linux底下都可以很方便地以FastCGI模式部署,貌似IIS下面不很好配置,而且IIS也缺少一个像PHPmanager一样的全自动配置工具,在公司服务器上部署起来颇费周折 ...

  3. Optimistic and Pessimistic locking

    悲观锁 悲观锁是指假设并发更新冲突会发生,所以不管冲突是否真的发生,都会使用锁机制. 悲观锁会完成以下功能:锁住读取的记录,防止其它事务读取和更新这些记录.其它事务会一直阻塞,直到这个事务结束. 悲观 ...

  4. Oracle SQL篇(四)group by 分组与分组的加强 rollup

        分组操作group by 和分组的强化(rollup) 分组操作和分组函数的使用,对于编写SQL语句的人来说,是最基本的概念. 我们来看下面的例子: 在这里我们使用员工表EMP scott@D ...

  5. RII K25A 语音空中飞鼠 红外学习步骤

    1.按住多功能遥控器上的SET按键,超过4秒不要放手,LED指示灯会闪一次,然后长亮.2.将多功能遥控器的红外口对准你原来的遥控器的红外口,然后按RII多功能遥控器面上任何按钮,上面灯将会闪动,闪动过 ...

  6. 【双模卡的相关知识】解SIM卡前需要知道的信息(SIM年分和厂商识别)

    <ignore_js_op> 二.SIM版本问题SIM卡的版本有两种说法,一是有些是制造厂制定的,二是电信公司的制定.下面以移动为例,目前我们手里的SIM有几种版本:v0.v1.v2.v3 ...

  7. 数据结构- 串的模式匹配算法:BF和 KMP算法

      数据结构- 串的模式匹配算法:BF和 KMP算法  Brute-Force算法的思想 1.BF(Brute-Force)算法 Brute-Force算法的基本思想是: 1) 从目标串s 的第一个字 ...

  8. flexjson 的使用

    日期转换             JSONSerializer serializer = new JSONSerializer();         serializer.exclude(new St ...

  9. UBER司机奖励政策

    高峰时段: 早高峰:早6:30-8:30点 晚高峰:晚4:00-7:00点 *周六日只有晚高峰 其他时间均为平峰时段 滴滴快车单单2.5倍,注册地址:http://www.udache.com/如何注 ...

  10. 在ASP.NET中动态加载内容(用户控件和模板)

    在ASP.NET中动态加载内容(用户控件和模板) 要点: 1. 使用Page.ParseControl 2. 使用base.LoadControl 第一部分:加载模板 下 面是一个模板“<tab ...