首先应该有一个openssl的终端,依次进行:

1.终端输入openssl,进入openssl状态

2.生成一个1024位的私钥:genrsa -out rsa_private_key.pem 1024

3.利用私钥生成JAVA支持的PKCS8类型的私钥:pkcs8 -topk8 -inform PEM -inrsa_private_key.pem-outform PEM -nocrypt -outpkcs8_private_key.pem

4.生成JAVA支持的PKCS8二进制类型的私钥:pkcs8 -topk8 -inform PEM -inrsa_private_key.pem-outform DER -nocrypt -outpkcs8_private_key.der

5.生成公钥:rsa -in rsa_private_key.pem-pubout -out rsa_public_key.pem

6.生成iOS支持的der证书,其间用到了证书请求和自签署根证书

  6.1.创建证书请求:req -new -out cert.csr -keyrsa_private_key.pem  (其间会要求填写国家地区公司信息等,随便填写OR认真填写都不影响证书使用)

  6.2.创建X509的自签署跟证书(iOS支持X509,有效期3650天):x509 -req -in cert.csr -out rsa_public_key.der -outform der -signkey rsa_private_key.pem -days 3650

完成了以上的步骤后应该在你所在的目录下生成了6个文件,其中pem的文件都是文本类型的,都可以使用文本编辑器或者cat命令查看。der的都是二进制的文件了,看不了。

以上的都完了,推荐打开github的链接,一个不认识的人写的,里面包含了java端和iOS的实现方式。https://github.com/BabyDuncan/RSA_OC_JAVA

但是有两点是需要注意的:

1.java那个使用公钥的部分,应该使用上述的第4步生成的pkcs8_private_key.der 文件,不要眼花啊

2.OC中在bundle中找不到der类型的文件,需要改一下上述6.2生成的rsa_public_key.der文件的后缀为 .cer 才可以。

完成上述的操作后就可以正常的使用了。

插播一句:如果在java中想使用 pkcs8_private_key.pem 文件的话,请自行把那段代码,没错就是那段代码(至于到底是哪段,自己找)替换成下面的这段

1            byte[] privateKeyData = Files.readAllBytes(
2 Paths.get("/Users/ald1/Documents/workspace/aaa/src/pkcs8_private_key.pem"));
3 byte[] decodedKeyData = Base64.decodeBase64(new String(privateKeyData)
4 .replaceAll("--\\w+ PRIVATE KEY--", "")
5 .replace("\n", ""));
6 KeyFactory keyFactory = KeyFactory.getInstance("RSA");
7 EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(decodedKeyData);

更多相关文章

  1. JAVA 实现tail -f 日志文件监控功能

随机推荐

  1. ANDROID自定义SCROLLVIEW
  2. Android 统计图表引擎AChartEngine(五) -
  3. Android Init Language(安卓初始化语言)
  4. Android百度地图SDK—地图标记
  5. Android应用开发基础之数据存储和界面展
  6. GridView使用相关问题
  7. 将Linux下的Android签名对pk8和pem转换为
  8. Android开发,使用xml drawable制作带边框
  9. android fragment(android.support.v4.app
  10. Android回炉系列之Surfaceflinger