.cer、crt 與 pem无拗、pfx
.cer/.crt是用于存放證書带到,它是2進(jìn)制形式存放的,不含私鑰英染,含公鑰揽惹。
.pem跟.crt/.cer的區(qū)別是它以Ascii碼來(lái)表示(字符串)。
.pfx/.p12用于存放個(gè)人證書/私鑰四康,他通常包含保護(hù)密碼搪搏,2進(jìn)制方式
注:node服務(wù)器需要的是.pem格式的私鑰與證書,iOS中需要的是.cer二進(jìn)制格式的證書闪金。
私鑰公鑰
//生產(chǎn)私鑰
$ openssl genrsa 1024 > rsa_private_key.pem
//由私鑰生產(chǎn)公鑰
$ openssl rsa -in rsa_private_key.pem -pubout > rsa_public_key.pem
證書
//生產(chǎn)私鑰
$ openssl genrsa 1024 > rsa_private_key.pem
//由私鑰生產(chǎn)證書請(qǐng)求(簽名)
$ openssl req -new -key rsa_private_key.pem -out certificate_request.csr
//通過(guò)私鑰文件和CSR證書簽名生成證書文件(服務(wù)器證書)
$ openssl x509 -req -days 365 -in certificate_request.csr -signkey rsa_private_key.pem -out cert.crt
//轉(zhuǎn)換證書(丟至Xcode項(xiàng)目中)
$ openssl x509 -in cert.crt -out cert_ios.cer -outform der
證書格式轉(zhuǎn)換
//.p12轉(zhuǎn).pem
$ openssl pkcs12 -in cert.p12 cert.pem -nodes
//.cer 轉(zhuǎn) .pem
$ openssl x509 -inform der -in certificate.cer -out certificate.pem
//.pem 轉(zhuǎn) .cer
$ openssl x509 -in certificate.pem -out certificate.cer -outform der
注:
證書與編碼
本至上疯溺,X.509證書是一個(gè)數(shù)字文檔,這個(gè)文檔根據(jù)RFC 5280來(lái)編碼并/或簽發(fā)哎垦。
實(shí)際上囱嫩,“X.509證書”經(jīng)常被用來(lái)指代IETF的PKIX(Public Key Infrastructure)證書和X.509 v3 證書標(biāo)準(zhǔn)中的CRL(Certificate Revocation List)。
X509 文件擴(kuò)展名
首先我們要理解文件的擴(kuò)展名代表什么漏设。DER墨闲、PEM、CRT和CER這些擴(kuò)展名經(jīng)常令人困惑愿题。很多人錯(cuò)誤地認(rèn)為這些擴(kuò)展名可以互相代替损俭。盡管的確有時(shí)候有些擴(kuò)展名是可以互換的蛙奖,但是最好你能確定證書是如何編碼的,進(jìn)而正確地標(biāo)識(shí)它們杆兵。正確地標(biāo)識(shí)證書有助于證書的管理雁仲。
編碼 (也用于擴(kuò)展名)
.DER = 擴(kuò)展名DER用于二進(jìn)制DER編碼的證書。這些證書也可以用CER或者CRT作為擴(kuò)展名琐脏。比較合適的說(shuō)法是“我有一個(gè)DER編碼的證書”攒砖,而不是“我有一個(gè)DER證書”。
.PEM = 擴(kuò)展名PEM用于ASCII(Base64)編碼的各種X.509 v3 證書日裙。文件開始由一行"—– BEGIN …“開始吹艇。
.csr = 證書簽發(fā)請(qǐng)求(Certificate Signing Request)
常用的擴(kuò)展名
.CRT = 擴(kuò)展名CRT用于證書。證書可以是DER編碼昂拂,也可以是PEM編碼受神。擴(kuò)展名CER和CRT幾乎是同義詞。這種情況在各種unix/linux系統(tǒng)中很常見格侯。
.CER = CRT證書的微軟型式鼻听。可以用微軟的工具把CRT文件轉(zhuǎn)換為CER文件(CRT和CER必須是相同編碼的联四,DER或者PEM)撑碴。擴(kuò)展名為CER的文件可以被IE識(shí)別并作為命令調(diào)用微軟的cryptoAPI(具體點(diǎn)就是rudll32.exe cryptext.dll, CyrptExtOpenCER),進(jìn)而彈出一個(gè)對(duì)話框來(lái)導(dǎo)入并/或查看證書內(nèi)容朝墩。
.KEY = 擴(kuò)展名KEY用于PCSK#8的公鑰和私鑰醉拓。這些公鑰和私鑰可以是DER編碼或者PEM編碼。
CRT文件和CER文件只有在使用相同編碼的時(shí)候才可以安全地相互替代收苏。