[大部分參考]https://www.cnblogs.com/littleatp/p/5878763.html
一、證書類型
x509的證書編碼格式
- PEM(Privacy-enhanced Electronic Mail)是明文格式的拖吼,以-----BEGIN CERTIFICATE-----開頭钞螟,以-----END CERTIFICATE-----結(jié)尾,中間是經(jīng)過base64編碼的內(nèi)容谭梗。查看這種格式證書信息的命令為:
openssl x509 -noout -text -in nextopKey.pem
- DER是二進制格式的證書般哼,查看這類證書信息的命令為:
openssl x509 -noout -text -inform der -in publicKey.der
二把敢、擴展名
- .crt證書文件,可以是DER(二進制)編碼的蜈亩,也可是PEM(ASCII(Base64))編碼的懦窘,在unix系統(tǒng)中比較常見。
- .cer也是證書文件稚配,編碼類型可以是PEM和DER畅涂,在windows中常見。
- .key一般公鑰或者密鑰都會使用這種擴展名道川,可以是DER或者PEM編碼午衰。
查看DER格式的.key文件命令:openssl rsa -inform DER -noout -text -in xxx.key
查看PEM格式的.pem文件命令:openssl rsa -inform PEM -noout -text -in xxx.key
- mac電腦在KeyChain -> KeyChain Access -> Certificate Assistant -> Request a Certificate from Certificate Authority生成的CertificateSigningRequest.certSigningRequest文件會在keyChain中生成兩個key立宜,一個是private.key另一個是public.key,將這兩個key導(dǎo)出來(export)臊岸,密鑰導(dǎo)出為p12文件橙数,公鑰為pem文件,如果要查看公鑰的話需要將-----BEGIN RSA PUBLIC KEY-----和-----END RSA PUBLIC KEY----- 的RSA刪除帅戒,然后通過命令
openssl rsa -noout -text -pubin -in public.pem
查看公鑰內(nèi)容灯帮,如果要查看私鑰內(nèi)容, 先將p12轉(zhuǎn)換為pem格式,通過openssl pkcs12 -in private.p12 -nodes -nocerts -out pri.pem
然后通過命令openssl rsa -noout -text -in pri.pem
查看逻住,如果想查看CertificateSigningRequest.certSigningRequest的內(nèi)容可以通過openssl req -noout -text -in CertificateSigningRequest.certSigningRequest
钟哥。
三、openssl指令
1)RSA密鑰操作
- 生成RSA密鑰(無加密)
openssl genrsa -out rsa_private.key 1024
- 生成RSA公鑰
openssl rsa -in rsa_private.key -pubout -out rsa_public.key
(-pubout指定輸出的為公鑰) - 生成RSA密鑰(aes256加密)
openssl genrsa -aes256 -passout pass:123123 -out rsa_aes_private.key 1024
(-passout 代替shell進行密碼輸入瞎访,否則會有提示密碼輸入的選項) - 生成RSA公鑰(通過aes256加密的密鑰生成)
openssl rsa -in rsa_aes_private.key -passin pass:123123 -pubout -out rsa_aes_pub.key
(-passin 同樣代替shell輸入密碼) - 私鑰轉(zhuǎn)換成非加密:
openssl rsa -in rsa_aes_private.key -passin pass:123123 -out rsa_stripe_private.key
- 私鑰轉(zhuǎn)為加密:
openssl rsa -in rsa_stripe_private.key -aes256 -passout pass:123123 -out rsa_reaes_private.key
- 私鑰PEM轉(zhuǎn)DER:
openssl rsa -in rsa_aes_private.key -passin pass:123123 -outform der -out rsa_aesDer_private.key
(用-inform和-outform來指定輸入和輸出的格式) - 查看密鑰信息:
openssl rsa -in rsa_aes_private.key -noout -text -passin pass:123123
- 查看公鑰信息:
openssl rsa -pubin -in rsa_public.key -noout -text
(-pubin 用來指定輸入的是公鑰) - PKCS#1轉(zhuǎn)PKCS#8:
openssl pkcs8 topk8 -in rsa_private.key -passout pass:123123 -out pk_private.key
(默認PKCS#8開啟密碼加密腻贰,所以使用-passout,可以通過-nocrypt取消加密) - MAC導(dǎo)出的p12文件導(dǎo)出為pem格式:
openssl pkcs12 -in a.p12 -nodes [-nokeys/-nocerts] -out aPEM.pem
扒秸,其中-nokeys表示輸出沒有私鑰银受,-nocerts表示輸出沒有公鑰
四、生成自簽名證書
1.生成RSA私鑰和自簽名證書:openssl req -newkey rsa:1024 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt
(req是證書請求子命令鸦采,-newkey rsa:1024 -keyout private.key表示生成私鑰PKCS8格式宾巍,-nodes不加密,-x509表示輸出證書渔伯,有效期限由-days指定)顶霞,成功后需要填寫一大堆信息,可以通過-subj選項預(yù)先設(shè)置:openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt subj /C=CN/ST=GD/L=SZ/O=vihoo/OU=dev/CN=vivo.com/emailAddress=yy@vivo.com
- 使用已有RSA私鑰生成自簽名證書:
openssl req -new -x509 -days 365 -key rsa_private.key -out cert.crt
(-new 指生成證書請求锣吼,加上-x509 表示直接輸出證書选浑,-key 指定私鑰文件,其余選項與上述命令相同)
五玄叠、生成簽名請求及CA簽名
- 使用RSA私鑰生成CSR簽名請求:
openssl req -new -key rsa_private.key -our server.csr
- 查看csr:
openssl req -noout -text -in server.csr
- 使用CA證書及密鑰對請求證書進行簽發(fā)古徒,生成x509證書:``
六、證書查看及轉(zhuǎn)換
- 查看證書
openssl x509 -noout -text -in cert.crt
(可以通過-inform定義證書格式) - 轉(zhuǎn)換證書編碼格式:
openssl x509 -in cert.cer -inform DER -outform PEM -out cert.pem
- 查看.mobileprovision文件:
security cms -D -i XXX.mobileprovision
七读恃、使用 ssh-keygen生成秘鑰對
??通過指令ssh-keygen -t rsa -b 2048 -f xxx
可以生成秘鑰對隧膘,公鑰的名稱為xxx.pub,其中
- -t 指定生成key的算法
- -b 指定key的長度
- -f 生成的文件名
??如果都不指定寺惫,直接輸入ssh-keygen之后會提示輸入各個參數(shù)疹吃,密碼可以不指定。
??但是通過ssh-keygen工具生成的公鑰無法被openssl識別西雀,因為格式是ssh-format萨驶,需要轉(zhuǎn)換成PKCS8,可以通過如下命令轉(zhuǎn)化:
ssh-keygen -e -m PKCS8 -f xxx.pub > xxx_pkcs8.pub
# -e 可以理解為export艇肴, -m指定導(dǎo)出的格式, -f 為導(dǎo)入的文件腔呜,最后將key的內(nèi)容以pkcs8的形式存入文件xxx_pkcs8.pub中
ssh-keygen -i -m PKCS8 -f xx.pub > xxx.pub
# -i 為導(dǎo)入
-----BEGIN OPENSSH PRIVATE KEY----- 轉(zhuǎn)換為 -----BEGIN RSA PRIVATE KEY-----
指令為ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
叁温,id_rsa 為OpenSSH RSA證書的名字,通過該指令將其轉(zhuǎn)換為PEM格式