方法1:

原版PFX证书

openssl pkcs12 -in myssl.pfx -nodes -out server.pem

提取私钥

openssl rsa -in server.pem -out server.key

提出公钥

openssl x509 -in server.pem -out server.crt

方法2:

2.从pfx提取密钥信息,并转换为key格式(pfx使用pkcs12模式补足)

(1)提取密钥对

openssl pkcs12 -in 1.pfx -nocerts -nodes -out 1.key

//如果pfx证书已加密,会提示输入密码。如果cer证书没有安装,则密码没法验证

(2)从密钥对提取私钥

openssl rsa -in  1.key -out 1_pri.key

(3)从密钥对提取公钥

openssl rsa -in 1.key -pubout -out 1_pub.key

(4)因为RSA算法使用的是pkcs8模式补足,需要对提取的私钥进一步处理

openssl pkcs8 -topk8 -inform PEM -in 1_pri.key -outform PEM -nocrypt

复制窗口中生成的密钥,保存为1_pri_pkcs8.key

(5)得到密钥对1_pri_pkcs8.key和1_pub.key

pkcs8格式的私钥转换工具。它处理在PKCS#8格式中的私钥文件。它可以用多样的PKCS#5 (v1.5 and v2.0)和 PKCS#12算法来处理没有解密的PKCS#8 PrivateKeyInfo格式和EncryptedPrivateKeyInfo格式。

用法:

[cpp] view plaincopy

openssl pkcs8 [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename]

[-passout arg] [-topk8] [-noiter] [-nocrypt] [-nooct] [-embed] [-nsdb] [-v2 alg] [-v1 alg] [-engine id]

选项说明:

-inform PEM|DER::输入文件格式,DER或者PEM格式。DER格式采用ASN1的DER标准格式。一般用的多的都是PEM格式,就是base64编码格式。

-outform DER|PEM:输出文件格式,DER或者PEM格式。

-in filename:输入的密钥文件,默认为标准输入。如果密钥被加密,会提示输入一个密钥口令。

-passin arg:输入文件口令保护来源。

-out filename:输出文件,默认为标准输出。如果任何加密操作已经执行,会提示输入一个密钥值。输出的文件名字不能和输入的文件名一样。

-passout arg:输出文件口令保护来源。

-topk8:通常的是输入一个pkcs8文件和传统的格式私钥文件将会被写出。设置了此选项后,位置转换过来:输入一个传统格式的私钥文件,输出一个PKCS#8格式的文件。

-noiter:MAC保护计算次数为1。

-nocrypt:PKCS#8密钥产生或输入一般用一个适当地密钥来加密PKCS#8 EncryptedPrivateKeyInfo结构。设置了此选项后,一个不加密的PrivateKeyInfo结构将会被输出。这个选项一直不加密私钥文件,在绝对必要的时候才能够使用。某些软件例如一些JAVA代码签名软件使用不加密的私钥文件。

-nooct:这个选项产生的RSA私钥文件是一个坏的格式,一些软件将会使用。特别的是,私钥文件必须附上一个八位组字符串,但是一些软件仅仅包含本身的结构体没有使八位组字符串所环绕。不采用八位组表示私钥。

-embed:这个选项产生的RSA私钥文件是一个坏的格式。在私钥结构体中采用嵌入式DSA参数格式。在这个表单中,八位组字符串包含了ASN1 SEQUENCE中的两种结构:一个SEQUENCE包含了密钥参数,一个ASN1 INTEGER包含私钥值。

-nsdb:这个选项产生的RSA私钥文件是一个坏的格式并兼容了Netscape私钥文件数据库。采用NetscapeDB的DSA格式。

-v2 alg:采用PKCS#5 v2.0,并指定加密算法,默认的是PKCS#8私钥文件被叫做B(该算法用56字节的DES加密但是在PKCS#5 v1.5中有更加强壮的加密算法)的加密算法用口令进行加密。用B选项,PKCS#5 v2.0相关的算法将会被使用,可以是des3(168字节)和rc2(128字节),推荐des3。

-v1 alg:采用PKCS#5 v1.5或pkcs12,并指定加密算法。可采用的算法见下面。

-engine id:指定硬件引擎。

注意:

加密了的PEM编码PKCS#8文件表单用下面的头部和尾部:

-----BEGIN ENCRYPTED PRIVATE KEY-----

-----END ENCRYPTED PRIVATE KEY-----

未加密的表单用:

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

-----END PRIVATE KEY-----

跟传统的SSLeay算法相比,用PKCS#5 v2.0系列的算法加密私钥,有更高的安全性以及迭代次数。于是附加的安全性是经过深思熟虑的。

默认的加密算法仅仅是56字节的,是因为它是PKCS#8所支持的最好的方法。

有一些软件使用PKCS#12基于密钥的加密算法来加密PKCS#8格式的私钥:它们会自动的处理但是没有选项来操作。

在PKCS#8格式中,有可能的是输出DER编码格式的经过加密的私钥文件,是因为加密的详细说明包含在DER等级中,相反的是传统的格式包含在PEM邓丽中。

PKCS#5 v1.5和 PKCS#12 算法:

各种各样的算法可以被选项-v1所使用。包含PKCS#5 v1.5和 PKCS#12 算法。详细描述如下:

B:这两个算法包含在PKCS#5 v1.5中。它们仅仅提供56字节的保护,加密算法用DES。

B:它们在传统的PKCS#5 v1.5中没有被提到,但是它们用同样地密钥引出算法,被一些软件所支持。在PKCS#5 v2.0中所提到。它们使用64字节的RC2以及56字节的DES。

B:它们是PKCS#12基于密钥的加密算法,它们允许使用高强度的加密算法,例如3des或128位的RC2。

实例:

用3des算法将传统的私钥文件转换为PKCS#5 v2.0:

[cpp] view plaincopy

openssl pkcs8 -in key.pem -topk8 -v2 des3 -out enckey.pem

用PKCS#5 1.5兼容的DES算法将私钥文件转换为pkcs8文件:

[html] view plaincopy

openssl pkcs8 -in ocspserverkey.pem -topk8 -out ocspkcs8key.pem

用PKCS#12兼容的3DES算法将私钥文件转换为pkcs8文件:

[html] view plaincopy

openssl pkcs8 -in key.pem -topk8 -out enckey.pem -v1 PBE-SHA1-3DES

读取一个DER格式加密了的PKCS#8格式的私钥:

[cpp] view plaincopy

openssl pkcs8 -inform DER -nocrypt -in key.der -out key.pem

转换一个PKCS#8格式的私钥到传统的私钥:

[cpp] view plaincopy

openssl pkcs8 -in pk8.pem -out key.pem

pkcs8中的私钥以明文存放:

[html] view plaincopy

openssl pkcs8 -in ocspserverkey.pem -topk8 -nocrypt -out ocspkcs8key.pem

标准:

PKCS#5 v2.0的测试向量的实现是以通告的形式用高强度的迭代次数算法3DES、DES和RC2来加密的。很多人要确认能够解密产生的私钥。

PKCS#8格式的DSA私钥文件没有备注文件中的:在PKCS#11 v2.01中的11.9节被隐藏了的。OpenSSL的默认DSA PKCS#8私钥格式隐藏在这个标准中。

BUGs:

必须有一个选项打印使用的加密算法的其他详细细节,例如迭代次数。

PKCS#8用3DES和PKCS#5 v2.0必须是默认的私钥文件:目前为了命令的兼容性。

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

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

创建openssl pfx证书文件

https://blog.csdn.net/lixiaowei16/article/details/72639817

1、生成key

输入genrsa -out openssl.key 1024生成openssl.key文件。

openssl.key为key的名字随意起,1024为密钥长度

2、生成cer证书

接着输入req -new -x509 -key openssl.key -out openssl.cer -days 3650 -subj /CN=***.website

openssl.key为之前生成的key的名字,openssl.cer为生成的证书名字,3650为证书过期天数,CN的参数***.website是的你主机名或者IP地址(这里一定要写对,不然以后访问的话,浏览器会提示有风险)。

这样就生成了证书文件openssl.cer

3、生成需要的PFX私钥文件

输入pkcs12 -export -out openssl.pfx -inkey openssl.key -in openssl.cer

会让你输入密码,使用私钥时候使用的(千万不能忘记)。

这样就生成了私钥文件openssl.pfx。

4、生成了crt证书

由于手机需要crt证书,所以需要的话还要生成crt

输入req -new -x509 -key openssl.key -out openssl.crt -days 3650

从crt证书文件得到公钥_PFX文件提取公钥私钥相关推荐

  1. 证书.p12导出 与 xxx.p1文件转出私钥,公钥,xxxx.crt文件,xxx.cre文件, xxx.pem文件

    首先:会有一个 xxxx.p12文件. p12文件是我们的每一个证书都可以生成一个.p12文件,这个文件是一个加密的文件,只要知道其密码,就可以供给所有的mac设备使用,使设备不需要在苹果开发者网站重 ...

  2. PFX提取 cer 提取 公钥和私钥及PHP读取cer 文件和pfx文件证书

    从PFX中提取私钥以下命令将从.pfx文件中提取私钥.将在当前目录中创建一个新的文件private-key.pem.此命令要求在pfx文件上设置密码.$ openssl pkcs12 -in myfi ...

  3. Https证书crt或者cer转换成bks文件

    1.下载bcprov-jdk15on-165.jar: http://www.bouncycastle.org/latest_releases.html 2.打开cmd执行命令: keytool -i ...

  4. PFX文件提取公钥私钥

    方法1: 原版PFX证书 openssl pkcs12 -in myssl.pfx -nodes -out server.pem 提取私钥 openssl rsa -in server.pem -ou ...

  5. ios开发证书CSR文件、CER文件、P12文件,mobileprovition许可文件的用途

    1.CSR文件      钥匙串文件,为生成证书做基础,要生成CER证书必须要有CSR私钥,此私钥包含了用户自己的一些信息. 2.开发证书 CER文件 苹果的这个开发者证书也是同样的原理,本地的req ...

  6. ios开发证书CER文件、P12文件,mobileprovition许可文件的用途

    1,开发证书 CER文件 这个文件的申请请去 http://blog.csdn.net/lanergaming/article/details/38784925 根据前边的博客大家已经知道证书.公钥. ...

  7. ios证书导出不了p12文件_IOS苹果证书无法生成.P12文件解决方法

    一般.p12文件是给与别人使用的,本机必须是专用密钥下的证书才可以生成.p12文件,也就是说你在种类下的所有项目里找到的证书是无法生成.P12文件的,因为它并不是在专用密钥下或者它不携带有专用密钥. ...

  8. hbuilder打包ios_免费获得苹果证书,HBuilderX打包IPA文件

    HBuilderX平台在线打包iOS应用目前最为简单的方法之一,打包的过程并不复杂,难点主要是在苹果证书身上,接下来亥著就带着大家一起来看看如何使用HBuilder在线打包ipa文件吧. ps:附带免 ...

  9. Putty将公钥私钥文件改成ppk文件

    相信Git的使用已经成为IT人士必备的使用技能了吧.最近本人遇到了一个问题,就是再使用Git Extensions的可视化工具的时候,发现pull .push 等操作代码都会报错,说不支持git@. ...

最新文章

  1. (MIDP)Prediction of potential disease-associated microRNAs based on random walk
  2. 自己对有上下界的网络流的理解
  3. Django从理论到实战(part9)--path和re_path
  4. python在eclipse下中文乱码问题zz
  5. Gentle中的数据表实体类相关自定义属性的设置和获得
  6. C++学习——set与map
  7. 三星Galaxy Note 10最新消息:将取消所有实体按键
  8. 我靠这个数据分析利器,3年当上运营主管
  9. html调用mysql数据库表里值,如何从MYSQL数据库正确调用行到HTML表中
  10. Win Form中限制TextBox只能输入数字
  11. matlab描点写函数,matlab描点并标上点的序号
  12. java html报表设置_快逸报表中html事件属性的使用
  13. 反转链表——Java递归求解
  14. 醉逍遥显示无法更新服务器,蜀门醉逍遥版本修改教程 (值好几千,俺心血).doc
  15. FPGA同步复位、异步复位、异步复位同步释放
  16. 网易,这次你让粉丝们失望了
  17. css3缓慢出现,让CSS3旋转开始缓慢然后结束缓慢?
  18. NLP标注工具Brat
  19. Verilog学习笔记4:关于5M40ZE64C4N接地的问题
  20. luffy-(13)

热门文章

  1. python热力图颜色_Python如何实现热力图?可视化入库图实战演示
  2. vue rem插件与cube ui组件样式冲突
  3. hive日期函数 整理
  4. 华为云服务器CentOS 8.2 安装docker
  5. php怎么求阶乘_编写PHP递归函数求10的阶乘。
  6. android插件化原理
  7. A. Circle Metro
  8. Oracle 10g Data Pump Expdp/Impdp 详解
  9. 如何开启Docker的远程访问
  10. ImportError: cannot import name ‘HttpUser‘ from ‘locust‘ (F:\python_home\locust\__init__.py)