数字证书实战经验——证书转换(Openssl&Java&Android)

协议及开发语言、证书工具介绍

以下证书标准格式主要阐述了java&android及openssl支持的证书格式协议,可通过协议标准互转。

标准/格式说明主流开发语言支持的工具
PKCS1openssl默认生成的标准Openssl
PKCS8Java支持的证书标准Java,openssl
PKCS12同时支持私钥和公钥的标准Java,openssl
DER浏览器默认证书格式,ASN.1原生文件格式JAVA,openssl
PEMOpenssl制定的以base64内容转码DER的文件格式Java,openssl
JksJava key storeJava
BksAndroid key storeJava

常用工具支持的协议介绍

目前按照市场上流行的证书文件格式。

  • openssl支持pkcs8和pkcs12,所以可以和java key tool之间互相转
  • Android BKS本身基于Java Key tool,可以和key store互相转,间接的跟openssl也可以互相转
     
工具格式支持协议或标准
OpensslPemPkcs1,pkcs8,pkcs12,pkcs7
Java key toolJks,keystorePkcs8, pkcs 12
AndroidBks基于java key tool

协议互转

协议和格式是可以互相转换的,如下

转换说明方式
Der – PEM通常是签发的X509数字证书格式转换Openssl x509 –in ./file –inform PEM –out out.der -outform DER
Openssl x509 –in ./file –inform DER –out out.PEM -outform PEM
PKCS1 – PKCS8通常转换是为了让java可读取识别这个稍微复杂,分pkcs8私钥转pkcs1私钥,Pkcs1私钥转pkcs8公钥,公钥同上,还按照不同加密算法(ecc,rsa) openssl的命令也不同
Key&cer – pkcs12通常打包私钥和公钥做成p12文件,或反之可使用Openssl pkcs12命令
Pkcs7 – DER/PEM通常导出p7b文件的证书可使用Openssl pkcs7命令
PKCS12 -- keystore通常用于夸语言提供pkcs12转java keystore,反之的话,就是导出p12Pkcs12转keystore:
keytool -importkeystore -destkeystore client_keystore.jks -deststoretype jks -deststorepass 123456 -srckeystore client.p12 -srcstoretype pkcs12 -srcstorepass 123456

Keystore转pkcs12:
keytool -importkeystore -srckeystore keystore -destkeystore client_keystore.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass password -deststorepass password -srcalias server -destalias xxx -srckeypass password -destkeypass password -noprompt 
PKCS12 – bks其实操作跟keystore一样,不过要借助一个第三方插件,bks格式就是bouncycastle的证书解决android证书,keystore与bks性质一样,只是在用keytool的时候需制定provider,同时存储类型为BKS,当然还得制定provider的jar,去BC官网去下载就行keytool -importkeystore -destkeystore client_keystore.jks -deststoretype BKS -deststorepass 123456 -srckeystore client.p12 -srcstoretype pkcs12 -srcstorepass 123456 -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath bcprov-jdk16-141.jar

RSA证书的pkcs1 pkcs8互转,EC请使用EC指令,或者pkcs8指令

1.pkcs8私钥 转pkcs1 私钥
openssl rsa -in demo_pkcs8.pem -out demo_pkcs1.pem

2.PKCS1 私钥转换为 PKCS8 私钥
openssl pkcs8 -topk8 -inform PEM -in demo_private.pem -outform pem -nocrypt -out demo_pcs8.pem

3.从 pkcs1 私钥中生成 pkcs8 公钥
openssl rsa -in demo _private.pem -pubout -out demo_public.pem

4.pkcs8 私钥中导出 pkcs8 公钥
openssl rsa -in demo_pcs8 pem -pubout -out demo_public_pkcs8.pem

5.pkcs8 公钥转 pkcs1公钥
openssl rsa -pubin -in demo_public.pem -RSAPublicKey_out

6.pkcs1公钥转换为pkcs8公钥
openssl rsa -RSAPublicKey_in -in pub_pkcs1.pem -pubout

小结

  • 如果openssl生成的证书需转pkcs12,再用java keytool去转成keystore
  • 如果是android,用keytool的时候指定provider、存储类型及jar,再转成BKS
  • 反向的keystore转成openssl支持的pkcs12证书,命令类似。
  • 其他的几乎openssl都能转换,熟练使用目前流行的证书工具可以帮助实现证书夸平台使用。
     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车联网服务端架构

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值