Node.js中.pfx后缀文件的处理方法


Posted in Javascript onMarch 10, 2017

前言

nodejs中,在做加密解密的时候,会得到第三方的各种各样的加密文件,其后缀也就那么几种吧,.key/.pem/.pfx等,是不是可以自定义,反正就是一个文件。

但是今天我看了很多的nodejs库好像也没有找到与java keytool这样的工具,因为在java里面,完全是可以读取pfx,然户进行在进行处理的,如果在nodejs中要如何操作,目前不知道,使用openssl做个转换处理先。

第一个命令是:

openssl pkcs12 -in xxxx.pfx -nocerts -nodes -out domain_encrypted.key

第二个命令是:

openssl rsa -in domain_encrypted.key -out private.key

哪位大神知道的,可以告知下,谢谢了。

==================补充=================

google上有个办法可以解析出两种格式的文件

第一种格式文件的方式

extract private key from .pfx file

# openssl pkcs12 -in myfile.pfx -nocerts -out private_key.pem -nodes
Enter Import Password:
MAC verified OK

第二种格式文件的方式

extract certificate from .pfx file

# openssl pkcs12 -in myfile.pfx -nokeys -out certificate_file.crt 
Enter Import Password:
MAC verified OK

详细的可到这里:http://tecadmin.net/extract-private-key-and-certificate-files-from-pfx-file/

==========================================

==========================================强烈补充

多日奋战,终于解决了这个问题,因为一直是一个私钥解密的问题

openssl pkcs12 -in xxxx_private.pfx -out xxxx_private.pem -nodes
openssl x509 -in xxxx_public.crt -inform der -outform pem -out xxxx_public.pem

这里主要是针对具体情况具体描述,可以变通取处理

因为对方给过来的是一个在window环境下,使用工具生成的pfx和crt文件。

经过对方给过来的生成工具的描述,这个crt文件还是一个cer后缀文件自己修改的cer->crt。可见这里如果对文件内容不了解,光从后缀来看会坑了很多人。

先来看第一行的命令语句.

经过文档的查询pfx文件是一个带有私钥跟证书的合体文件,通过上面的命令就可以得到一个文件就是private.pem,里面是一个含有证书和私钥的。

不知道的我这里举例。

私钥是以

-----BEGIN RSA PRIVATE KEY-----

开头的。

证书是以

-----BEGIN CERTIFICATE-----

开头的。对不起不方便把所有内容同时贴出来。很容易辨别的。

然后对方还会给你一个crt文件,这个事实上就是一个x509对应的证书,需要解出来,但是对于是java的应该就不需要了,不过是php的或这是node的就需要了。

当然是证书的话,就必须是以

-----BEGIN CERTIFICATE-----

开头的。

好了,如果你跟别人对接接口,遇到私钥公钥的问题,但是对方给了你pfx和crt文件的话,就按照这个命令去操作的吧,我已经在php和node环境下试过了。不过具体的算法还是要针对具体的情况来实施。

================补充================

REM export the ssl cert (normal cases)
openssl pkcs12 -in aa.pfx -out aa.pem -nokeys -clcerts

REM export the ssl cert (Crescendo load balancers)

openssl pkcs12 -in aa.pfx -out aa_tmp_cn.pem -nodes
openssl x509 -in aa_tmp_cn.pem -out aa_cn.pem -text

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
javascript与CSS复习(《精通javascript》)
Jun 29 Javascript
Javascript中拼接大量字符串的方法
Feb 05 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
Mar 27 Javascript
JavaScript禁止用户多次提交的两种方法
Jul 24 Javascript
javascript 网页进度条简单实例
Feb 22 Javascript
jquery与js实现全选功能的区别
Jun 11 jQuery
React Native 真机断点调试+跨域资源加载出错问题的解决方法
Jan 18 Javascript
微信小程序如何获取openid及用户信息
Jan 26 Javascript
解决vue+webpack打包路径的问题
Mar 06 Javascript
使用angularjs.foreach时return的问题解决
Sep 30 Javascript
如何实现echarts markline标签名显示自己想要的
Jul 20 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
Oct 13 Javascript
Vue.js结合bootstrap实现分页控件
Mar 10 #Javascript
js获取ip和地区
Mar 10 #Javascript
Vue.js bootstrap前端实现分页和排序
Mar 10 #Javascript
JavaScript组件开发之输入框加候选框
Mar 10 #Javascript
原生javascript移动端滑动banner效果
Mar 10 #Javascript
jQuery弹出窗口简单实现代码
Mar 09 #Javascript
JavaScript实现弹窗效果代码分析
Mar 09 #Javascript
You might like
树型结构列出指定目录里所有文件的PHP类
2006/10/09 PHP
PHPMyAdmin 快速配置方法
2009/05/11 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
2017/12/15 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
微信小程序激励式视频广告组件使用详解
2019/12/06 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
python实现图片处理和特征提取详解
2017/11/13 Python
Python 带有参数的装饰器实例代码详解
2018/12/06 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
使用python实现简单五子棋游戏
2019/06/18 Python
使用Python计算玩彩票赢钱概率
2019/06/26 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
物业经理自我鉴定
2014/03/03 职场文书
珍惜水资源建议书
2014/03/12 职场文书
市场营销专业自荐书
2014/06/10 职场文书
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL