OpenSSL命令---pkcs12

用途:html

pkcs12文件工具,能生成和分析pkcs12文件。PKCS#12文件能够被用于多个项目,例如包含Netscape MSIE MS Outlooknode

用法:算法

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]

选项说明:windows

PKCS#12文件在建立或分析的时候要依赖有一些选项。默认的是分析一个PKCS#12文件。一个PKCS#12文件能够用B<-export>选项来建立。ide

分析选项:工具

-in filename:指定私钥和证书读取的文件,默认为标准输入。必须为PEM格式。编码

-out filename:指定输出的pkcs12文件,默认为标准输出。加密

-password arg:指定导入导出口令来源。idea

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

-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:用3DESPKCS12进行加密,这样杨浦可能会致使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.0XXXX为其持有者摘要值。

-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文件被其它的应用程序(MSIENetscape)会触发这个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
相关文章
相关标签/搜索