php openssl 处理pkcs8,【转载】OpenSSL命令---pkcs8
用途:
pkcs8格式的私鑰轉(zhuǎn)換工具。它處理在PKCS#8格式中的私鑰文件。它可以用多樣的PKCS#5 (v1.5 and v2.0)和PKCS#12算法來(lái)處理沒(méi)有解密的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]
選項(xiàng)說(shuō)明:
-inform PEM|DER::輸入文件格式,DER或者PEM格式。DER格式采用ASN1的DER標(biāo)準(zhǔn)格式。一般用的多的都是PEM格式,就是base64編碼格式。
-outform DER|PEM:輸出文件格式,DER或者PEM格式。
-in filename:輸入的密鑰文件,默認(rèn)為標(biāo)準(zhǔn)輸入。如果密鑰被加密,會(huì)提示輸入一個(gè)密鑰口令。
-passin arg:輸入文件口令保護(hù)來(lái)源。
-out filename:輸出文件,默認(rèn)為標(biāo)準(zhǔn)輸出。如果任何加密操作已經(jīng)執(zhí)行,會(huì)提示輸入一個(gè)密鑰值。輸出的文件名字不能和輸入的文件名一樣。
-passout arg:輸出文件口令保護(hù)來(lái)源。
-topk8:通常的是輸入一個(gè)pkcs8文件和傳統(tǒng)的格式私鑰文件將會(huì)被寫(xiě)出。設(shè)置了此選項(xiàng)后,位置轉(zhuǎn)換過(guò)來(lái):輸入一個(gè)傳統(tǒng)格式的私鑰文件,輸出一個(gè)PKCS#8格式的文件。
-noiter:MAC保護(hù)計(jì)算次數(shù)為1。
-nocrypt:PKCS#8密鑰產(chǎn)生或輸入一般用一個(gè)適當(dāng)?shù)孛荑€來(lái)加密PKCS#8 EncryptedPrivateKeyInfo結(jié)構(gòu)。設(shè)置了此選項(xiàng)后,一個(gè)不加密的PrivateKeyInfo結(jié)構(gòu)將會(huì)被輸出。這個(gè)選項(xiàng)一直不加密私鑰文件,在絕對(duì)必要的時(shí)候才能夠使用。某些軟件例如一些JAVA代碼簽名軟件使用不加密的私鑰文件。
-nooct:這個(gè)選項(xiàng)產(chǎn)生的RSA私鑰文件是一個(gè)壞的格式,一些軟件將會(huì)使用。特別的是,私鑰文件必須附上一個(gè)八位組字符串,但是一些軟件僅僅包含本身的結(jié)構(gòu)體沒(méi)有使八位組字符串所環(huán)繞。不采用八位組表示私鑰。
-embed:這個(gè)選項(xiàng)產(chǎn)生的RSA私鑰文件是一個(gè)壞的格式。在私鑰結(jié)構(gòu)體中采用嵌入式DSA參數(shù)格式。在這個(gè)表單中,八位組字符串包含了ASN1 SEQUENCE中的兩種結(jié)構(gòu):一個(gè)SEQUENCE包含了密鑰參數(shù),一個(gè)ASN1 INTEGER包含私鑰值。
-nsdb:這個(gè)選項(xiàng)產(chǎn)生的RSA私鑰文件是一個(gè)壞的格式并兼容了Netscape私鑰文件數(shù)據(jù)庫(kù)。采用NetscapeDB的DSA格式。
-v2 alg:采用PKCS#5 v2.0,并指定加密算法,默認(rèn)的是PKCS#8私鑰文件被叫做B(該算法用56字節(jié)的DES加密但是在PKCS#5 v1.5中有更加強(qiáng)壯的加密算法)的加密算法用口令進(jìn)行加密。用B選項(xiàng),PKCS#5 v2.0相關(guān)的算法將會(huì)被使用,可以是des3(168字節(jié))和rc2(128字節(jié)),推薦des3。
-v1 alg:采用PKCS#5 v1.5或pkcs12,并指定加密算法??刹捎玫乃惴ㄒ?jiàn)下面。
-engine id:指定硬件引擎。
注意:
加密了的PEM編碼PKCS#8文件表單用下面的頭部和尾部:
-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----
未加密的表單用:
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----
跟傳統(tǒng)的SSLeay算法相比,用PKCS#5 v2.0系列的算法加密私鑰,有更高的安全性以及迭代次數(shù)。于是附加的安全性是經(jīng)過(guò)深思熟慮的。
默認(rèn)的加密算法僅僅是56字節(jié)的,是因?yàn)樗荘KCS#8所支持的最好的方法。
有一些軟件使用PKCS#12基于密鑰的加密算法來(lái)加密PKCS#8格式的私鑰:它們會(huì)自動(dòng)的處理但是沒(méi)有選項(xiàng)來(lái)操作。
在PKCS#8格式中,有可能的是輸出DER編碼格式的經(jīng)過(guò)加密的私鑰文件,是因?yàn)榧用艿脑敿?xì)說(shuō)明包含在DER等級(jí)中,相反的是傳統(tǒng)的格式包含在PEM鄧麗中。
PKCS#5 v1.5和PKCS#12算法:
各種各樣的算法可以被選項(xiàng)-v1所使用。包含PKCS#5 v1.5和PKCS#12算法。詳細(xì)描述如下:
B:這兩個(gè)算法包含在PKCS#5 v1.5中。它們僅僅提供56字節(jié)的保護(hù),加密算法用DES。
B:它們?cè)趥鹘y(tǒng)的PKCS#5 v1.5中沒(méi)有被提到,但是它們用同樣地密鑰引出算法,被一些軟件所支持。在PKCS#5 v2.0中所提到。它們使用64字節(jié)的RC2以及56字節(jié)的DES。
B:它們是PKCS#12基于密鑰的加密算法,它們?cè)试S使用高強(qiáng)度的加密算法,例如3des或128位的RC2。
實(shí)例:
用3des算法將傳統(tǒng)的私鑰文件轉(zhuǎn)換為PKCS#5 v2.0:
openssl pkcs8 -in key.pem -topk8 -v2 des3 -out enckey.pem
用PKCS#5 1.5兼容的DES算法將私鑰文件轉(zhuǎn)換為pkcs8文件:
openssl pkcs8 -in ocspserverkey.pem -topk8 -out ocspkcs8key.pem
用PKCS#12兼容的3DES算法將私鑰文件轉(zhuǎn)換為pkcs8文件:
openssl pkcs8 -in key.pem -topk8 -out enckey.pem -v1 PBE-SHA1-3DES
讀取一個(gè)DER格式加密了的PKCS#8格式的私鑰:
openssl pkcs8 -inform DER -nocrypt -in key.der -out key.pem
轉(zhuǎn)換一個(gè)PKCS#8格式的私鑰到傳統(tǒng)的私鑰:
openssl pkcs8 -in pk8.pem -out key.pem
pkcs8中的私鑰以明文存放:
openssl pkcs8 -in ocspserverkey.pem -topk8 -nocrypt -out ocspkcs8key.pem
標(biāo)準(zhǔn):
PKCS#5 v2.0的測(cè)試向量的實(shí)現(xiàn)是以通告的形式用高強(qiáng)度的迭代次數(shù)算法3DES、DES和RC2來(lái)加密的。很多人要確認(rèn)能夠解密產(chǎn)生的私鑰。
PKCS#8格式的DSA私鑰文件沒(méi)有備注文件中的:在PKCS#11 v2.01中的11.9節(jié)被隱藏了的。OpenSSL的默認(rèn)DSA PKCS#8私鑰格式隱藏在這個(gè)標(biāo)準(zhǔn)中。
BUGs:
必須有一個(gè)選項(xiàng)打印使用的加密算法的其他詳細(xì)細(xì)節(jié),例如迭代次數(shù)。
PKCS#8用3DES和PKCS#5 v2.0必須是默認(rèn)的私鑰文件:目前為了命令的兼容性。
我的微信:graent_hu
歡迎掃碼加我的微信好友,有什么問(wèn)題我們可以一起探討,有什么需要也隨時(shí)歡迎發(fā)消息給我~
轉(zhuǎn)載請(qǐng)注明出處:
本文鏈接:https://www.wlyc.cn/post-184.html
總結(jié)
以上是生活随笔為你收集整理的php openssl 处理pkcs8,【转载】OpenSSL命令---pkcs8的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 对linux信号量的理解以及实现
- 下一篇: php openssl 处理pkcs8,