keytool 生成 Android SSL 使用的 BKS
我是在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的更多相关文章
- 使用JDK的keytool生成Android签名证书
生成证书:keytool -genkey -alias [yourapp] -keyalg RSA -validity 20000 -keystore [yourapp].keystore 输入key ...
- JDK自带工具keytool生成ssl证书
前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl证书来使用https以保证数据安全. 百度了不少资料,看到JAVA的JDK自带生成SSL证书的工具: ...
- 使用keytool生成ssl证书
使用keytool生成ssl证书 在项目中由于要使用https访问项目,然后了解到jdk有一个自带的工具keytool可以用来生成ssl证书,从而可以通过https进行访问. 使用keytool生成s ...
- cmd命令生成android签名证书
cmd命令生成android签名证书,有空在写一篇eclipse导出带签名的apk,这里面包括生成新的签名.现在还是讲讲在cmd怎么操作生成签名证书. 1.dos下进入JDK的bin目录 运行如下命令 ...
- 使用jdk的keytool 生成CA证书的方法
一.CA证书生成设置总共分为以下5步: 步骤: 1.根据java的keytool生成CA根证书,放在服务器 2.根据服务器CA根证书导出客户端证书 3.tomcat增加SSL配置 4.客户端IE浏览器 ...
- Tomcat服务器配置https双向认证(使用keytool生成证书)
一,HTTPS原理 1,HTTP.HTTPS.SSL.TLS介绍与相互关系 (1)HTTP:平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的(明文),因此使用HTTP协议传输隐私 ...
- 利用JDK自带工具keyTool生成安全证书
前言:说一下最近做的工作,主要利用iText给网页中生成好的html报表转化为pdf格式的文件,并且在其中加入水印,数字签名等等,这部分主要介绍安全证书的目的就是为了做数字签名部分用的. 下面利用jd ...
- JAVA调用 keytool 生成keystore 和 cer 证书
keytool是一个Java数据证书的管理工具, keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里, 包含两种数据: 密钥实体( ...
- 用ticons指令结合ImageMagickDisplay工具批量生成Android适应图片
用ticons指令结合ImageMagickDisplay工具批量生成Android适应图片 ticons的用法可以百度 这里记录下具体的编译方法 在安装了ticons和ImageMagickDisp ...
随机推荐
- First AngularJS !
My first angular! <html ng-app> <head> <meta charset="utf-8"> <script ...
- JS 深拷贝
使用递归进行深拷贝 http://lingyu.wang/2014/03/20/js-interview-1/ Object.prototype.deepClone = function() { va ...
- css为网页顶部和底部都加入背景图
网页背景图是我们常用的功能,一般来说.给网页加一个背景图,只要在网页的body标签中加入css属性就行. 代码如下:<body style="background-image:url( ...
- S50卡
产品名称:Mifare 1K(S50)卡 芯片类型:Philips Mifare 1 IC S50 存储容量:8Kbit,16个分区,每分区两组密码 工作频率:13.56 MHz 通讯速率:106KB ...
- QT类型转换(九种转换)
1.char * 与 const char *的转换 char *ch1="hello11";const char *ch2="hello22";ch2 = c ...
- 转:详细解说 STL 排序(Sort)
详细解说 STL 排序(Sort) 详细解说 STL 排序(Sort) 作者Winter 详细解说 STL 排序(Sort) 0 前言: STL,为什么你必须掌握 1 STL提供的Sort 算法 1. ...
- 【Leetcode】Triangle
给定一个由数字组成的三角形,从顶至底找出路径最小和. Given a triangle, find the minimum path sum from top to bottom. Each step ...
- 深度学习 Deep Learning UFLDL 最新 Tutorial 学习笔记 1:Linear Regression
1 前言 Andrew Ng的UFLDL在2014年9月底更新了. 对于開始研究Deep Learning的童鞋们来说这真的是极大的好消息! 新的Tutorial相比旧的Tutorial添加了Conv ...
- 关于RadUpload上传问题总结
最近在开发上传控件,使用RadUpload上传大附件 发现了几个小问题,总结后分享给大家: 1.IE6浏览器下文件的路径显示的是物理路径,需要进行转换 2.IIS7.0 配置时要选择经典模式 3.we ...
- 「OC」 多态
一.基本概念 多态在代码中的体现,即为某一类事物的多种形态,OC对象具有多态性.必须要有继承,没有继承就没有多态. 在使用多态时,会进行动态检测,以调用真实的对象方法. 多态在代码中的体现即父类指针指 ...