问题:android在网络各种教程里面,都是只有BKS的格式,但是一般后端给我们的公钥证书都是crt/cer/pem格式的,这种时候,常用的做法就是用keytools转换成bks格式。    个人感觉,这种做法很low,一眼就能让别人感觉你完全不懂证书

其实我们常用的证书就2大种:

  1. 16进制的
  2. 16进制进行base64编码后(这种尤其常用),添加  ----BEGIN CERTIFICATE---   --- END…………

解决方法:

SSLContext sslContext = SSLContext.getInstance("TLS");CertificateFactory cf = CertificateFactory.getInstance("X.509");InputStream in = BaseUtils.getApp().getAssets().open("puk.crt");   // 这个puk.crt文件可以是16进制的也可以是Base64后的Certificate ca = cf.generateCertificate(in);KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());trustStore.load(null, null);trustStore.setCertificateEntry("ca", ca);TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());trustManagerFactory.init(trustStore);            sslContext.init(null, trustManagerFactory.getTrustManagers(), null);SSLSocketFactory socketFactory = sslContext.getSocketFactory();OkHttpClient okHttpClient = new OkHttpClient.Builder()   // 构建OKHttp客户端                    .sslSocketFactory(socketFactory)                    .build();

 

 

更多相关文章

  1. [C#] 與Android共舞–手機post資料給Server (转帖)
  2. Android通过OpenGl Es渲染NV21格式视频
  3. Android(安卓)7.0增加jack跟jill编译器(转)
  4. 【Android】WebView加载https页面不能正常显示资源问题
  5. Android信任Https自签名证书详细教程
  6. Android(安卓)获取签名证书的详细信息(Eclipse和Android(安卓)stu
  7. 用charles拦截android设备https,证书无效的解决方法
  8. PHP将数据库查询内容转换为JSON格式且显示中文
  9. android xml-----Sax解析

随机推荐

  1. android 根据apk文件路径获取图标
  2. android 自定义提示弹窗效果
  3. Android全局异常统一处理
  4. Android图片裁剪Demo
  5. Android第一个程序 Hello World
  6. android SharedFerence使用
  7. android定制对话框
  8. Android的SwitchCompat和Switch
  9. android 获取屏幕高度和宽度
  10. 参考注释郭霖老师的Android相机程序