OpenSSL命令---pkcs8

用途:html

pkcs8格式的私鑰轉換工具。它處理在PKCS#8格式中的私鑰文件。它能夠用多樣的PKCS#5 (v1.5 and v2.0) PKCS#12算法來處理沒有解密的PKCS#8 PrivateKeyInfo格式和EncryptedPrivateKeyInfo格式。算法

用法:數據庫

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格式採用ASN1DER標準格式。通常用的多的都是PEM格式,就是base64編碼格式。工具

-outform DER|PEM:輸出文件格式,DER或者PEM格式。測試

-in filename:輸入的密鑰文件,默認爲標準輸入。若是密鑰被加密,會提示輸入一個密鑰口令。編碼

-passin arg:輸入文件口令保護來源。加密

-out filename:輸出文件,默認爲標準輸出。若是任何加密操做已經執行,會提示輸入一個密鑰值。輸出的文件名字不能和輸入的文件名同樣。spa

-passout arg:輸出文件口令保護來源。3d

-topk8:一般的是輸入一個pkcs8文件和傳統的格式私鑰文件將會被寫出。設置了此選項後,位置轉換過來:輸入一個傳統格式的私鑰文件,輸出一個PKCS#8格式的文件。

-noiterMAC保護計算次數爲1

-nocryptPKCS#8密鑰產生或輸入通常用一個適當地密鑰來加密PKCS#8 EncryptedPrivateKeyInfo結構。設置了此選項後,一個不加密的PrivateKeyInfo結構將會被輸出。這個選項一直不加密私鑰文件,在絕對必要的時候纔可以使用。某些軟件例如一些JAVA代碼簽名軟件使用不加密的私鑰文件。

-nooct這個選項產生的RSA私鑰文件是一個壞的格式,一些軟件將會使用。特別的是,私鑰文件必須附上一個八位組字符串,可是一些軟件僅僅包含自己的結構體沒有使八位組字符串所環繞。不採用八位組表示私鑰。

-embed:這個選項產生的RSA私鑰文件是一個壞的格式。在私鑰結構體中採用嵌入式DSA參數格式。在這個表單中,八位組字符串包含了ASN1 SEQUENCE中的兩種結構:一個SEQUENCE包含了密鑰參數,一個ASN1 INTEGER包含私鑰值。

-nsdb:這個選項產生的RSA私鑰文件是一個壞的格式併兼容了Netscape私鑰文件數據庫。採用NetscapeDBDSA格式。

-v2 alg:採用PKCS#5 v2.0,並指定加密算法,默認的是PKCS#8私鑰文件被叫作B<pbeWithMD5AndDES-CBC>(該算法用56字節的DES加密可是在PKCS#5 v1.5中有更增強壯的加密算法)的加密算法用口令進行加密。用B<-v2>選項,PKCS#5 v2.0相關的算法將會被使用,能夠是des3168字節)和rc2128字節),推薦des3

-v1 alg:採用PKCS#5 v1.5pkcs12,並指定加密算法。可採用的算法見下面。

 -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<PBE-MD2-DES PBE-MD5-DES>:這兩個算法包含在PKCS#5 v1.5中。它們僅僅提供56字節的保護,加密算法用DES

B<PBE-SHA1-RC2-64 PBE-MD2-RC2-64 PBE-MD5-RC2-64 PBE-SHA1-DES>:它們在傳統的PKCS#5 v1.5中沒有被提到,可是它們用一樣地密鑰引出算法,被一些軟件所支持。在PKCS#5 v2.0中所提到。它們使用64字節的RC2以及56字節的DES

B<PBE-SHA1-RC4-128 PBE-SHA1-RC4-40 PBE-SHA1-3DES PBE-SHA1-2DES PBE-SHA1-RC2-128 PBE-SHA1-RC2-40>:它們是PKCS#12基於密鑰的加密算法,它們容許使用高強度的加密算法,例如3des128位的RC2

實例:

3des算法將傳統的私鑰文件轉換爲PKCS#5 v2.0

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


PKCS#5 1.5兼容的DES算法將私鑰文件轉換爲pkcs8文件:

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


PKCS#12兼容的3DES算法將私鑰文件轉換爲pkcs8文件:

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


讀取一個DER格式加密了的PKCS#8格式的私鑰:

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


轉換一個PKCS#8格式的私鑰到傳統的私鑰:

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


pkcs8中的私鑰以明文存放:

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


標準:

PKCS#5 v2.0的測試向量的實現是以通告的形式用高強度的迭代次數算法3DESDESRC2來加密的。不少人要確認可以解密產生的私鑰。

PKCS#8格式的DSA私鑰文件沒有備註文件中的:在PKCS#11 v2.01中的11.9節被隱藏了的。OpenSSL的默認DSA PKCS#8私鑰格式隱藏在這個標準中。

BUGs

必須有一個選項打印使用的加密算法的其餘詳細細節,例如迭代次數。

PKCS#83DESPKCS#5 v2.0必須是默認的私鑰文件:目前爲了命令的兼容性。

相關文章
相關標籤/搜索