android 公钥pem编码,android 使用crt/cer/pem格式的公钥证书

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

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

16进制的

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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值