ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

从rsa私钥字符串变成pfx文件

2021-08-11 14:31:36  阅读:281  来源: 互联网

标签:私钥 KEY openssl rsa ssl keyMap ----- key pfx



近日,从合作方拿到一个rsa的字符串私钥,但是程序中需要使用pfx格式的文件,
所以需要转化格式,通过咨询,合作方是通过如下方法得到私钥的:
private JSONObject RsaKeyGet() throws Exception{
JSONObject obj = new JSONObject();
Map<String, Object> keyMap = RSAUtils.genKeyPair();
String publicKey = RSAUtils.getPublicKey(keyMap);
String privateKey = RSAUtils.getPrivateKey(keyMap);
obj.put("publicKey", publicKey);
obj.put("privateKey", privateKey);
return obj;

}
————————————————————————————————
public static Map<String, Object> genKeyPair() throws Exception {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM);
keyPairGen.initialize(1024);
KeyPair keyPair = keyPairGen.generateKeyPair();
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
Map<String, Object> keyMap = new HashMap<String, Object>(2);
keyMap.put(PUBLIC_KEY, publicKey);
keyMap.put(PRIVATE_KEY, privateKey);
return keyMap;
}
——————————————————————————————————
我们的做法如下:


1.将字符串修改成openssl所需格式
private static final String PRIVATE_KEY="MIICdwIBA。。。3DP4=";


我们是通过 openssl genrsa -out my.key 1024 命令观察输入的格式是怎么样的,如下
openssl genrsa -out my.key 1024
[root@redis3 tmp]# cat my.key
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCZJEBcW0vcZ0NRKpDIb0nXe1bJ+DeJfHAlnVQAraQxBih8rTKQ
pfoPacBhmtE/jono/iM9ebKvBYGOodjWlTHHpU0Cc9V4KLoYLVY5RmMUZGB+uMWL
XUYRVzuSZJGi11x5Bcxy+eic0tdKynaZoKtcKQeRpMgGynDsdGsTuAev9wIDAQAB
AoGAT/U3jYE1iKx532UkFyLUISgK1oU9KhHI1Dri4z/GXLpkZURhBFlEyMtkYRHe
cxrPMtGOQMjL3Mo5LOmgN9nKFS6LjeWBgNM9esOaeEuLMBO5ej8mCQ7A+ohoeIgY
J2SyZavmS64g4Q5Y3LVqOjnIUKDUThAh4qbw61z950BTDJECQQDLEYBsYrqqlcWX
xQl0jadZfa+hX2acEybAT2UWx2eKjrtdcapGUFq05a/HvHsKdHtHoySVXisb7JbC
bQzNuo3LAkEAwQ8zE7URdXnhXfDcOM/oUJ3JDoJJhw2HijJUtj2hFg5ZC4OPnW43
+lkBkG76gt0CHpGMIoWA8Mpu/4kTRdthBQJAXa8eW2KVEbv1I9awTQhJC51TmJRl
x12ChDhcv8yQ9ThyMmMNFlFd95T7qp9G+ITSlzMp3otKQiC9UMd0n7kQTwJBAKdh
ejM35W8owJAl54kKGKzsYAjIRN9mh4D1qiRmwmbRAbrN0ZH4oWfYC1ciIOecnd3K
6uhzPxuFJz89pQwH69ECQQC32YsAcogYw5Ue5ViJfYHiW0yJ5iLm6rF2a8YPAQyD
GSZXcY64gOuw0VdrDHj+09FEe0OfaJSp3iIRkw2gDt4o
-----END RSA PRIVATE KEY-----
每行64个base64编码的字符,最后剩余的成一行
前面用-----BEGIN RSA PRIVATE KEY-----开头
后面用-----END RSA PRIVATE KEY-----结尾


保存成文件ssl.key


2.然后使用key文件生成证书请求文件
openssl req -new -key ssl.key -out ssl.csr


3生成crt证书文件,这里需要填写相应信息,国家 地区 城市 公司 部门 个人 等信息,密码可以不填写
openssl x509 -req -days 3650 -in ssl.csr -signkey ssl.key -out ssl.crt

4生成我们需要的pfx文件,这里输入密码,保护安全
openssl pkcs12 -export -inkey ssl.key -in ssl.crt -out ssl.pfx



验证:反向提取rsa私钥


1.获取pem格式明文信息
openssl pkcs12 -in ssl.pfx -nodes -out ssl.pem


2.提取私钥
openssl rsa -in ssl.pem -out ssl.key


3.按照pkcs8模式补足,输出的明文就是我们的私钥
openssl pkcs8 -topk8 -inform PEM -in ssl.key -outform PEM -nocrypt


只要保证刚开始的秘钥和最后得到的秘钥是同一个,基本就没有错了!

 

 

标签:私钥,KEY,openssl,rsa,ssl,keyMap,-----,key,pfx
来源: https://www.cnblogs.com/cquccy/p/15128020.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有