Android中SSL通信中使用的bks格式证书的生成

上一篇Android开发之基于Netty的TCP连接中使用SSL加密提到需要加载jks格式的证书来构建SSLContext实际上在Android中是无法使用jks证书的。Android 系统中使用的证书要求是bks格式
一般来说,我们使用jdk的keytool只能生成jks的证书库,如果生成bks的则需要下载BouncyCastle库。
搜集了各方资料,整理了以下如何将服务端提供的crt格式证书转换成Android上使用的bks证书。

1 Introduction

JKS和JCEKS是Java密钥库(KeyStore)的两种比较常见类型,JKS的Provider是SUN,在每个版本的JDK中都有。
BKS来自BouncyCastleProvider,它使用的也是TripleDES来保护密钥库中的Key,它能够防止证书库被不小心修改(Keystore的keyentry改掉1个bit都会产生错误),BKS能够跟JKS互操作。

2 Steps

  1. 要生成bks证书,需要bcprov-ext-jdk15on-151.jar下载地址)。且将该文件放到Java\jdk1.8.0_20\jre\lib\ext目录下。

  2. 我们的后端同事提供了自签名的服务器证书server.crt,我们需要把这个server.crt转换成Android系统的bks格式证书。使用以下命令行:
    keytool -importcert -trustcacerts -keystore e:\key.bks -file e:\server.crt -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider
    按照提示重复输入两次密码(在Java的KeyStore对象加载证书时会用到这个密码。),然后就成功将E:\目录下的server.crt转成key.bks证书。

  3. 把证书复制到Android项目的asset目录中,参考上篇文章即可实现单向的SSL加密TCP通信。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值