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中eval函数的使用方法与示例
Apr 09 Javascript
动态创建样式表在各浏览器中的差异测试代码
Sep 13 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
Feb 05 Javascript
JavaScript操作cookie类实例
Mar 31 Javascript
javascript删除元素节点removeChild()用法实例
May 26 Javascript
JavaScript在网页中画圆的函数arc使用方法
Nov 13 Javascript
BootStrap网页中代码显示用法详解
Oct 21 Javascript
bootstrap table 多选框分页保留示例代码
Mar 08 Javascript
js尾调用优化的实现
May 23 Javascript
JS回调函数简单易懂的入门实例分析
Sep 29 Javascript
js+h5 canvas实现图片验证码
Oct 11 Javascript
详解JavaScript中的this指向问题
Feb 05 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中curl使用指南
2015/02/05 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
js 分页全选或反选标识实现代码
2011/08/09 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
初识Node.js
2015/03/20 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
Vue.js实现可编辑的表格
2019/12/11 Javascript
js实现内置计时器
2019/12/16 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
Python中用于返回绝对值的abs()方法
2015/05/14 Python
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
python邮件发送smtplib使用详解
2020/06/16 Python
Python加载带有注释的Json文件实例
2018/05/23 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
Python-split()函数实例用法讲解
2020/12/18 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
2014组织生活会方案
2014/05/19 职场文书
幼儿园辞职书
2015/02/26 职场文书
PyTorch device与cuda.device用法
2022/04/03 Python
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技