Android 开发中关于读取SSL证书的两种方式

    最近在搞一个项目,其中通讯方式用的是https。用了两种方式读取的证书,适应不同情况的需求,下面就简单说下。

方式一:在工程中assets文件夹下放入证书文件,直接复制粘贴就好。在程序中读取:

    1、创建AssetManager,

AssetManager assetManager = context.getAssets();

    2、用输入流读取文件

 

InputStream inputStream = assetManager.open("cacert.pem");

也可以不用创建AssetManager,直接用就好,如下:

 

InputStream inputStream = context.getAssets().open("cacert.pem");

方式二:把证书文件导入机器中,通过文件形式读取。

    1、导入证书方法:adb push D:\证书所在路劲\cacert.pem data/data/工程包名/files/ 

    2、得到证书所在的路劲:

String CACERT_PATH = xxx.getFilesDir() + File.separator + "cacert.pem";
//getFilesDir():创建路径;File.separator:系统分隔符,保证在任何系统下都不会出错。

    3、通过路劲,读取证书:

  

File file = new File(CACERT_PATH);
if (file.exists()) {
   inputStream = new FileInputStream(file);
}

以上所述就是证书导入Android工程的方法。

下面代码是读取证书中的具体内容:

 

InputStream inputStream = null;
/******************通过日志查看证书内容可以验证证书是否导入*************************
 InputStreamReader isr = null;
 BufferedReader br = null;

 StringBuffer sb = new StringBuffer();

 try {
 inputStream = assetManager.open("cacert-payplus.ubin.top.pem");
 isr = new InputStreamReader(inputStream);
 br = new BufferedReader(isr);

 sb.append(br.readLine());
 String line = null;
 while ((line = br.readLine()) != null) {
 sb.append("\n" + line);
 }

 br.close();
 isr.close();
 inputStream.close();
 } catch (IOException e) {
 e.printStackTrace();
 }finally {
 try {
 if (br != null) {
 br.close();
 }
 if (isr != null) {
 isr.close();
 }
 if (inputStream != null) {
 inputStream.close();
 }
 } catch (IOException e) {
 e.printStackTrace();
 }
 }
 //return sb.toString();
 Log.d("zfr_证书===",sb.toString());
 *******************************************/

注:如有问题可以回复,看到第一时间分析解决,码农不易,感觉对您有用,帮助到您,可否打赏一杯可乐,在此谢过诸位,愿诸君终成大神,前程似锦~~~

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值