本文來(lái)源于我搜到的一篇英文文章篡九,因?yàn)楦杏X比較有用,所以翻譯了一下記下來(lái)醋奠。其英文原文地址: https://support.ssl.com/index.php?/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them
譯文如下榛臼,有翻譯錯(cuò)誤的地方,還望指正窜司。
一沛善、證書和編碼
X.509證書,其核心是根據(jù)RFC 5280編碼或數(shù)字簽名的數(shù)字文檔。
實(shí)際上例证,術(shù)語(yǔ)X.509證書通常指的是IETF的PKIX證書和X.509 v3證書標(biāo)準(zhǔn)的CRL 文件路呜,即如RFC 5280(通常稱為PKIX for Public Key Infrastructure(X.509))中規(guī)定的。
二织咧、X509文件擴(kuò)展
我們首先要了解的是每種類型的文件擴(kuò)展名胀葱。 很多人不清楚DER,PEM笙蒙,CRT和CER結(jié)尾的文件是什么抵屿,更有甚者錯(cuò)誤地說(shuō)是可以互換的。 在某些情況下捅位,某些可以互換轧葛,最佳做法是識(shí)別證書的編碼方式搂抒,然后正確標(biāo)記。 正確標(biāo)簽的證書將更容易操縱
三尿扯、編碼方式?jīng)Q定擴(kuò)展名類型
1).DER 擴(kuò)展名
.DER 擴(kuò)展用于二進(jìn)制DER編碼證書求晶。
這些文件也可能承載CER或CRT擴(kuò)展。 正確的說(shuō)法是“我有一個(gè)DER編碼的證書”不是“我有一個(gè)DER證書”衷笋。
2).PEM 擴(kuò)展名
.PEM 擴(kuò)展用于不同類型的X.509v3文件芳杏,是以“ - BEGIN ...”前綴的ASCII(Base64)數(shù)據(jù)。
3)常見的擴(kuò)展
3.1).CRT 擴(kuò)展名
.CRT 擴(kuò)展用于證書辟宗。 證書可以被編碼為二進(jìn)制DER或ASCII PEM爵赵。 CER和CRT擴(kuò)展幾乎是同義詞。 最常見的于Unix 或類Unix系統(tǒng)泊脐。
3.2).CER擴(kuò)展名
CER 是.crt的替代形式(Microsoft Convention)您可以在微軟系統(tǒng)環(huán)境下將.crt轉(zhuǎn)換為.cer(.both DER編碼的.cer空幻,或base64 [PEM]編碼的.cer)。
.cer文件擴(kuò)展名也被IE識(shí)別為 一個(gè)運(yùn)行MS cryptoAPI命令的命令(特別是rundll32.exe cryptext.dll容客,CryptExtOpenCER)秕铛,該命令顯示用于導(dǎo)入和/或查看證書內(nèi)容的對(duì)話框。
3.3).KEY 擴(kuò)展名
.KEY擴(kuò)展名用于公鑰和私鑰PKCS#8耘柱。 鍵可以被編碼為二進(jìn)制DER或ASCII PEM如捅。
四棍现、常見的OpenSSL證書操作
證書操作有四種基本類型调煎。查看,轉(zhuǎn)換己肮,組合和提取士袄。
1)查看證書
即使PEM編碼的證書是ASCII,它們是不可讀的谎僻。這里有一些命令可以讓你以可讀的形式輸出證書的內(nèi)容;
1.1)查看PEM編碼證書
openssl x509 -in cert.pem -text –noout
openssl x509 -in cert.cer -text –noout
openssl x509 -in cert.crt -text –noout
如果您遇到這個(gè)錯(cuò)誤娄柳,這意味著您正在嘗試查看DER編碼的證書,并需要使用“查看DER編碼證書”中的命令艘绍。
unable to load certificate 12626:error:0906D06C:PEMroutines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTEDCERTIFICATE
1.2)查看DER編碼證書
openssl x509 -in certificate.der -inform der -text -noout
如果您遇到以下錯(cuò)誤赤拒,則表示您嘗試使用DER編碼證書的命令查看PEM編碼證書。在“查看PEM編碼的證書”中使用命令
unable to load certificate 13978:error:0D0680A8:asn1 encodingroutines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306: 13978:error:0D07803A:asn1 encodingroutines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:380:Type=X509
2)轉(zhuǎn)換證書格式
轉(zhuǎn)換可以將一種類型的編碼證書存入另一種诱鞠。(即PEM到DER轉(zhuǎn)換)
PEM到DER
openssl x509 -in cert.crt -outform der-out cert.der
DER到PEM
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
3)組合證書
在某些情況下挎挖,將多個(gè)X.509基礎(chǔ)設(shè)施組合到單個(gè)文件中是有利的。一個(gè)常見的例子是將私鑰和公鑰兩者結(jié)合到相同的證書中航夺。
組合密鑰和鏈的最簡(jiǎn)單的方法是將每個(gè)文件轉(zhuǎn)換為PEM編碼的證書蕉朵,然后將每個(gè)文件的內(nèi)容簡(jiǎn)單地復(fù)制到一個(gè)新文件中。這適用于組合文件以在Apache中使用的應(yīng)用程序阳掐。
4)證書提取
一些證書將以組合形式出現(xiàn)始衅。 一個(gè)文件可以包含以下任何一個(gè):證書冷蚂,私鑰,公鑰汛闸,簽名證書蝙茶,證書頒發(fā)機(jī)構(gòu)(CA)和/或權(quán)限鏈。