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 相关文章推荐
遍历jquery对象的代码分享
Nov 02 Javascript
js调试系列 初识控制台
Jun 18 Javascript
jQuery控制TR显示隐藏的几种方法
Jun 18 Javascript
一个不错的仿携程自定义数据下拉选择select
Sep 01 Javascript
jQuery实现简单二级下拉菜单
Apr 12 Javascript
浅谈如何实现easyui的datebox格式化
Jun 12 Javascript
Angular2学习教程之ng中变更检测问题详解
May 28 Javascript
vue中路由参数传递可能会遇到的坑
Dec 07 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
Jan 23 jQuery
jQuery实现标签子元素的添加和赋值方法
Feb 24 jQuery
微信小程序日历/日期选择插件使用方法详解
Dec 28 Javascript
keep-alive保持组件状态的方法
Dec 02 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
PHP5函数小全(分享)
2013/06/06 PHP
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
python导出chrome书签到markdown文件的实例代码
2017/12/27 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
使用Python+selenium实现第一个自动化测试脚本
2020/03/17 Python
Python tcp传输代码实例解析
2020/03/18 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
Python函数调用追踪实现代码
2020/11/27 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
东南亚旅游平台:The Trip Guru
2018/01/01 全球购物
sort命令的作用和用法
2012/11/04 面试题
建筑设计学生的自我评价
2014/01/16 职场文书
美食节策划方案
2014/05/26 职场文书
教师节祝酒词
2015/08/11 职场文书
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers