本文來源于我搜到的一篇英文文章,因為感覺比較有用,所以翻譯了一下記下來。其英文原文地址: https://support.ssl.com/index.php?/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them
譯文如下,有翻譯錯誤的地方,還望指正。
一、證書和編碼
X.509證書,其核心是根據(jù)RFC 5280編碼或數(shù)字簽名的數(shù)字文檔。
實際上,術(shù)語X.509證書通常指的是IETF的PKIX證書和X.509 v3證書標準的CRL 文件,即如RFC 5280(通常稱為PKIX for Public Key Infrastructure(X.509))中規(guī)定的。
二、X509文件擴展
我們首先要了解的是每種類型的文件擴展名。 很多人不清楚DER,PEM,CRT和CER結(jié)尾的文件是什么,更有甚者錯誤地說是可以互換的。 在某些情況下,某些可以互換,最佳做法是識別證書的編碼方式,然后正確標記。 正確標簽的證書將更容易操縱
三、編碼方式?jīng)Q定擴展名類型
1).DER 擴展名
.DER 擴展用于二進制DER編碼證書。
這些文件也可能承載CER或CRT擴展。 正確的說法是“我有一個DER編碼的證書”不是“我有一個DER證書”。
2).PEM 擴展名
.PEM 擴展用于不同類型的X.509v3文件,是以“ - BEGIN ...”前綴的ASCII(Base64)數(shù)據(jù)。
3)常見的擴展
3.1).CRT 擴展名
.CRT 擴展用于證書。 證書可以被編碼為二進制DER或ASCII PEM。 CER和CRT擴展幾乎是同義詞。 最常見的于Unix 或類Unix系統(tǒng)。
3.2).CER擴展名
CER 是.crt的替代形式(Microsoft Convention)您可以在微軟系統(tǒng)環(huán)境下將.crt轉(zhuǎn)換為.cer(.both DER編碼的.cer,或base64 [PEM]編碼的.cer)。
.cer文件擴展名也被IE識別為 一個運行MS cryptoAPI命令的命令(特別是rundll32.exe cryptext.dll,CryptExtOpenCER),該命令顯示用于導入和/或查看證書內(nèi)容的對話框。
3.3).KEY 擴展名
.KEY擴展名用于公鑰和私鑰PKCS#8。 鍵可以被編碼為二進制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
如果您遇到這個錯誤,這意味著您正在嘗試查看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
如果您遇到以下錯誤,則表示您嘗試使用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)組合證書
在某些情況下,將多個X.509基礎(chǔ)設施組合到單個文件中是有利的。一個常見的例子是將私鑰和公鑰兩者結(jié)合到相同的證書中。
組合密鑰和鏈的最簡單的方法是將每個文件轉(zhuǎn)換為PEM編碼的證書,然后將每個文件的內(nèi)容簡單地復制到一個新文件中。這適用于組合文件以在Apache中使用的應用程序。
4)證書提取
一些證書將以組合形式出現(xiàn)。 一個文件可以包含以下任何一個:證書,私鑰,公鑰,簽名證書,證書頒發(fā)機構(gòu)(CA)和/或權(quán)限鏈。