(转)OpenSSL命令---pkcs12
用途:
pkcs12文件工具,能生成和分析pkcs12文件。PKCS#12文件可以被用于多个项目,例如包含Netscape、 MSIE 和 MS Outlook。
用法:
openssl pkcs12 [-export] [-chain] [-inkey filename] [-certfile filename] [-CApath arg] [-CAfile arg]
[-name name] [-caname name] [-in filename] [-out filename] [-noout] [-nomacver] [-nocerts]
[-clcerts] [-cacerts] [-nokeys] [-info] [-noiter] [-maciter] [-nomaciter] [-nomac] [-twopass] [-descert]
[-certpbe alg] [-keypbe alg] [-macalg digest] [-keyex] [-keysig] [-password arg] [-passin arg] [-passout arg]
[-rand file(s)] [-LMK] [-CSP name][-engine e] [-des] [-des3] [-aes128] [-aes192] [-aes256] [-idea]
[-camellia128] [-camellia192] [-camellia256] [-nodes]
选项说明:
PKCS#12文件在创建或分析的时候要依赖有一些选项。默认的是分析一个PKCS#12文件。一个PKCS#12文件可以用B<-export>选项来创建。
分析选项:
-in filename:指定私钥和证书读取的文件,默认为标准输入。必须为PEM格式。
-out filename:指定输出的pkcs12文件,默认为标准输出。
-password arg:指定导入导出口令来源。
-passin arg:输入文件保护口令来源。
-passout arg:指定所有输出私钥保护口令来源。
-noout:不打印参数编码的版本信息。
-clcerts:仅仅输出客户端证书,不输出CA证书。
-cacerts:仅仅输出CA证书,不输出客户端证书。
-nocerts:不输出任何证书。
-nokeys:不输出任何私钥信息值。
-info:输出PKCS#12文件结构的附加信息值。例如用的算法信息以及迭代次数。
-des:在输出之前用DES算法加密私钥值。
-des3:在输出之前用3DES算法加密私钥值。此项为默认。
-idea:在输出之前用IDEA算法加密私钥值。
-aes128、-aes192、-aes256:在输出之前用AES算法加密私钥值。
-camellia128、-camellia192、-camellia256:在输出之前用camellia算法加密私钥值。
-nodes:一直对私钥不加密。
-nomacver:读取文件时不验证MAC值的完整性。
-twopass:需要用户分别指定MAC口令和加密口令。
文件创建选项:
-export:这个选项指定了一个PKCS#12文件将会被创建。
-in filename:指定私钥和证书读取的文件,默认为标准输入。必须为PEM格式。
-out filename:指定输出的pkcs12文件,默认为标准输出。
-inkey filename:指定私钥文件的位置。如果没有被指定,私钥必须在-in filename中指定。
-name name:指定证书以及私钥的友好名字。当用软件导入这个文件时,这个名字将被显示出来。
-certfilefilename:添加filename中所有的证书信息值。
-caname name:指定其它证书的友好名字。这个选项可以被用于多次。
-password arg:指定导入导出口令来源。
-passin arg:输入文件保护口令来源。
-passout arg:指定所有输出私钥保护口令来源。
-chain:如果这个选项被提出,则添加用户证书的证书链。标准CA中心用它来搜索。如果搜索失败,则是一个重大的错误。
-descert:用3DES对PKCS12进行加密,这样杨浦可能会导致PKCS12文件被一些“export grade”软件不能够读取。默认的是用3DES对私钥文件进行加密,用40位的RC2对证书公钥文件进行加密。
-certpbealg:该选项允许指定证书的加密算法。任何PKCS#5 v1.5或 PKCS#12 PBE类型的算法都可以被使用。默认使用的是40位的RC2。
-keypbe alg:该选项允许指定证书私钥的加密算法。任何PKCS#5 v1.5或 PKCS#12 PBE类型的算法都可以被使用。默认使用的是3DES。
-keyex:设置私钥仅仅被用于密钥交换。
-keysig:设置私钥仅仅被用于数字签名。
-macalg digest:指定MAC摘要算法。如果没有被指定,则默认使用sha1。
-nomaciter、-noiter:这个选项影响MAC值和密钥算法的迭代次数。除非你希望产生的文件能与MSIE 4.0相兼容,可以把这两个选项丢弃一边。
-maciter:加强完整性保护,多次计算MAC。
-nomac:不去规定MAC值的完整性。
-rand file(s):指定随机数种子文件,多个文件间用分隔符分开,windows用“;”,OpenVMS用“,“,其他系统用“:”。
-CApatharg:指定CA目录。该目录必须是一个标准证书目录:每个CA文件的文件名为XXXX.0,XXXX为其持有者摘要值。
-CAfile arg:指定CA文件。
-LMK:添加本地的机械属性到私钥中。
-CSP name:微软的CSP的名字。
-engine id:指定硬件引擎。
注意:
有一大部分选项将不会使用。对PKCS#12文件来说,仅仅B<-in>和 B<-out>需要被使用。对文件创建来说,B<-export>和 B<-name>使用。
如果B<-clcerts>、B<-cacerts>或 B<-nocerts>没有存在,所有的证书将会被依附到PKCS#12文件将会被输出。没有保证的是提出的第一个证书不一定匹配私钥。某些软件需要一个私钥和证书,来承担在文件中的第一个证书匹配私钥:经常没有这种情况。用B<-clcerts>选项能够解决问题,因为这个选项要输出与私钥文件相匹配的证书。如果CA证书是必需的,用B<-nokeys -cacerts>选项来输出文件,仅仅输出CA证书。
B<-keypbe> 和 B<-certpbe>算法允许明确的私钥加密算法和证书的详细说明。通常的默认是好的,但是偶尔的软件不能够处理经过3DES加密了的私钥。选项B<-keypbe PBE-SHA1-RC2-40>可以被用于减少40字节的RC2私钥加密。一个完整的所有算法的描述包含在B<pkcs8>手册中。
实例:
分析一个PKCS#12文件和输出到文件中:
openssl pkcs12 -in file.p12 -out file.pem
仅仅输出客户端证书到文件中:
openssl pkcs12 -in file.p12 -clcerts -out file.pem
不加密私钥文件:
openssl pkcs12 -in file.p12 -out file.pem -nodes
打印PKCS#12格式的信息值:
openssl pkcs12 -in file.p12 -info -noout
生成pkcs12文件,但不包含CA证书:
openssl pkcs12 -export -inkey ocspserverkey.pem -in ocspservercert.pem -out ocspserverpkcs12.pfx
生成pcs12文件,包含CA证书:
openssl pkcs12 -export -inkey ocspserverkey.pem -in ocspservercert.pem -CAfile demoCA/cacert.pem -chain -out ocsp1.pfx
将pcks12中的信息分离出来,写入文件:
openssl pkcs12 –in ocsp1.pfx -out certandkey.pem
显示pkcs12信息:
openssl pkcs12 –in ocsp1.pfx -info
BUGS:
有一些争论是PKCS#12的标准是一个大的BUG。
OpenSSL 0.9.6a以前的版本在PKCS#12的产生过程中有一个bug。在稀有的情况下用一个无效的密钥来加密并产生PKCS#12文件。这样做的结果是一些PKCS#12文件被其它的应用程序(MSIE或Netscape)会触发这个bug。因为他们不会被OpenSSL或相似的OpenSSL在产生PKCS#12文件时不能够被加密。产生的通道相当的小:在256中比1还小。
一方面这个Bug的固定影响是老的无效的加密了的PKCS#12文件不能够被固定的版本所分析。在这种情况下,B<pkcs12>会报告’ the MAC is OK but fail with a decryption error when extracting private keys’错误。
这个问题的解决方法是用老的OpenSSL版本从PKCS#12中来提起私钥文件和证书,用新的版本、提取到的证书、私钥来重新创建PKCS#12文件。例如:
old-openssl -in bad.p12 -out keycerts.pem
openssl -in keycerts.pem -export -name "My PKCS#12 file" -out fixed.p12
转自:http://www.cnblogs.com/pangblog/p/3424217.html
(转)OpenSSL命令---pkcs12的更多相关文章
- OpenSSL命令---pkcs12
用途: pkcs12文件工具,能生成和分析pkcs12文件.PKCS#12文件可以被用于多个项目,例如包含Netscape. MSIE 和 MS Outlook. 用法: openssl pkcs12 ...
- OpenSSL命令系列
1.1 ssl命令系列前言 openssl命令的格式是"openssl command command-options args",command部分有很多种命令,这些命令需要依赖 ...
- openssl命令实例
基本知识 1,证书标准 X.509 X.509 - 这是一种证书标准,主要定义了证书中应该包含哪些内容.其详情可以参考RFC5280,SSL使用的就是这种证书标准. X.509的证书文件,一般以.cr ...
- (2) OpenSSL命令
openssl命令的格式是"openssl command command-options args",command部分有很多种命令,这些命令需要依赖于openssl命令才能执行 ...
- openssl命令用法
openssl命令 配置文件:/etc/pki/tls/openssl.cnf 命令格式: openssl command [ command_opts ] [ command_args ] 众多子命 ...
- openssl命令行工具简介 - 指令x509
原文链接: http://blog.csdn.net/allwtg/article/details/4982507 openssl命令行工具简介 - 指令x509 用法: open ...
- 使用openssl命令剖析RSA私钥文件格式
原文 https://blog.csdn.net/zhymax/article/details/7683925 Openssl提供了强大证书功能,生成密钥对.证书,颁发证书.生成crl.验证证书.销毁 ...
- 用OpenSSL命令行生成证书文件
用OpenSSL命令行生成证书文件 1.首先要生成服务器端的私钥(key文件): openssl genrsa -des3 -out server.key 1024 运行时会提示输入密码,此密码用于加 ...
- (转)openssl 命令: openssl req 命令详解
openssl req命令主要的功能有,生成证书请求文件, 查看验证证书请求文件,还有就是生成自签名证书.本文就主要记录一下open ...
随机推荐
- 手势识别 GestureDetector ScaleGestureDetector
识别器GestureDetector基本介绍 当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等.一般情况下,我们可以通过View或Activity的onTouch ...
- java反射机制 struts2 获取 action、method、invocation、proxy
ActionInvocation invocation = ActionContext.getContext().getActionInvocation(); Object action = invo ...
- spring-data-mongodb一个系统xml文件里面配置两个数据源
spring-data-mongodb一个系统xml文件里面配置两个数据源 参考文档如下: http://www.iteye.com/problems/92789 http://stackoverfl ...
- Examples_08_07
http://yarin.iteye.com/?page=4 Activity01.java package com.yarin.android.Examples_08_07; import andr ...
- SQL数据库中把一个表中的数据复制到另一个表中
1.如果是整个表复制表达如下: insert into table1 select * from table2 2.如果是有选择性的复制数据表达如下: insert into table1(colu ...
- Windows Server 2008关闭internet explorer增强的安全配置
服务器系统要求很高的安全性,所以微软给ie添加了安全增强.这就使得ie在Internet区域的安全级别一直是最高的,而且无法进行整体调整. 关闭IE SEC服务器系统要求很高的安全性,所以微软给ie添 ...
- linux vi 使用脑图
- JQuery操作下拉框 select
要实现这种效果: html代码 1<script src="js/jquery-1.7.2.min.js"></script> 2 <table> ...
- 1109HTML学习
<div><!--face里面用逗号隔开表示 字体优先选择.size是字体1到7 --><font color="red" face="微软 ...
- [资料] Apache2 的 httpd.conf 经典中文翻译
[i=s] 本帖最后由 www.PHP888.com 于 2009-5-22 13:40 编辑 [/i] # 基于 NCSA 服务的配置文件. # #这是Apache服务器主要配置文件. #它包含服务 ...