申请了ssl证书,总算搭起了https,但问题又来了,android和java居然不认这个证书,必须要用定制方式。问题就大了

在android的 httpclient 版本应该是4.0,几乎网上很少有讲到4.0的开发,定制ssl就更少了。

上官网查了一下,有个简单的例子是关于定制

http://svn.apache.org/repos/asf/httpcomponents/httpclient/branches/4.0.x/httpclient/src/examples/org/apache/http/examples/client/ClientCustomSSL.java

异常简单,但实际上大量的内容是在keystore里,首先是格式问题,在jdk桌面版本里是jks格式,而在android里是bks格式。

从代码上看也就是注册了一个https协议,绑上自己定制的keystore。这个keystore制作也不复杂,当然要找对路。

如果使用桌面jdk测试,那么要创建jks格式的keystore。使用一个工具:http://www.brothersoft.com/keytool-iui-for-windows-90269.html

实际是用java写的工具,直接运行rc15ktl.jar就行了。

功能很多,就用create keystore创建keystore,然后用import导入证书,这个证书可以是根证书,也可以是自签名证书,一个简单的方法是访问https的网站,然后导出证书,用firefox可以导出pem格式。导入时不要忘了选对格式。

总的来说就是将pem格式的证书放入jks格式的keystore。另外如果是startssl的免费证书,那么可以导入startssl的根证书。

这样在pc机上可以测试成功。

如果在android上测试定制ssl证书,那么要创建bks格式的keystore,另外可以把keystore放sdcard也可以内置到R.raw里。代码看上去是这样:

HttpClient httpclient = new DefaultHttpClient();KeyStore trustStore  = KeyStore.getInstance(KeyStore.getDefaultType());InputStream instream = res.openRawResource(R.raw.keystore);try {  trustStore.load(instream, "passwordforkeystore".toCharArray());          } finally {              instream.close();          }        SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);        Scheme sch = new Scheme("https", socketFactory, 443);        httpclient.getConnectionManager().getSchemeRegistry().register(sch);HttpGet httpget = new HttpGet("https://server");HttpResponse response = httpclient.execute(httpget);HttpEntity entity = response.getEntity();if (entity != null) {System.out.println(EntityUtils.toString(entity));}


keystore可以是有密码也可以是没密码,只要在代码是没写错就行。

如果使用其他端口,就改443为其他端口。

更多相关文章

  1. Android(五):Android(安卓)数字签名
  2. Android(安卓)studio 单元测试初探
  3. Android(安卓)Studio 3.1 正式版发布
  4. Android通过百度地图API用Service和Alarm在后台定时获取地理位置
  5. Android(安卓)代码混淆技术总结
  6. Android(安卓)GreenDao实现CRUD和升级详解
  7. Android-如何在代码中获取attr属性的值
  8. Android(安卓)判断网络状态,并且在没有网络的时候,打开网络设置对
  9. Android获取屏幕大小和设置无标题栏

随机推荐

  1. [Android]Fragment生命周期
  2. android应用程序跳转到系统的各个设置页
  3. (转) Android的Window类
  4. Android小项目——简单计算器的实现
  5. Android监听WIFI网络的变化并且获得当前
  6. Android使用XML全攻略(1)
  7. [安卓]Android(安卓)Developer Tools(Ecl
  8. Android 二维码开发功能实现(五)-----对z
  9. Android(安卓)AIDL基本步骤
  10. Socket Android手机客户端与PC服务端局域