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
相關文章
相關標籤/搜索