首先應該有一個openssl的終端,依次進行:
1.終端輸入openssl,進入openssl狀態
2.生成一個1024位的私鑰:genrsa -out rsa_private_key.pem 1024
3.利用私鑰生成JAVA支持的PKCS8類型的私鑰:pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out pkcs8_private_key.pem
4.生成JAVA支持的PKCS8二進制類型的私鑰:pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform DER -nocrypt -out pkcs8_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 -key rsa_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);
當然,文件的路徑自行腦補。
再附送幾個調研此次成果的鏈接,可能相關性不是很大,看下就好
OpenSSL的官網幫助:http://openssl.org/docs/manmaster/apps/rsa.html
iOS的獲取公鑰私鑰:http://codego.net/455876/
證書轉換:https://www.sslshopper.com/ssl-converter.html
隨意看看會有幫助的文章:http://blog.csdn.net/as3luyuan123/article/details/16105435
http://witcheryne.iteye.com/blog/2171850
http://blog.chinaunix.net/uid-26729093-id-9165.html
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。