證書,私鑰,公鑰,pfx,keystore,pem,der 都是什麼?
轉自:https://blog.csdn.net/qq_30698633/article/details/77895151
我們知道,現在的網站為了資料的安全,往往都會使用證書進行簽名或者加密資料。可以證書的各種字尾讓人無從下手,不知道該用什麼,以及怎麼使用。
什麼是CA?
CA就相當於一個認證機構,只要經過這個機構簽名的證書我們就可以當做是可信任的。我們的瀏覽器中,已經被寫入了預設的CA根證書。
什麼是證書?
證書就是將我們的公鑰和相關資訊寫入一個檔案,CA用它們的私鑰對我們的公鑰和相關資訊進行簽名後,將簽名信息也寫入這個檔案後生成的一個檔案。
證書格式(是一種標準):
x509 這種證書只有公鑰,不包含私鑰。
pcks#7 這種主要是用於簽名或者加密。
pcks#12 這種含有私鑰,同時也含有公鑰,但是有口令保護。
編碼方式:
.pem 字尾的證書都是base64編碼
.der 字尾的證書都是二進位制格式
證書:
.csr 字尾的檔案是用於向ca申請簽名的請求檔案
.crt .cer 字尾的檔案都是證書檔案(編碼方式不一定,有可能是.pem,也有可能是.der)
私鑰:
.key 字尾的檔案是私鑰檔案
包含證書和私鑰:
.keystore .jks .truststore 字尾的檔案,是java搞的,java可以用這個格式。這個檔案中包含證書和私鑰,但是獲取私鑰需要密碼才可以,
這是一個證書庫,裡面可以儲存多個證書和金鑰,通過別名可以獲取到。
.pfx 主要用於windows平臺,瀏覽器可以使用,也是包含證書和私鑰,獲取私鑰需要密碼才可以
知識點:
1、使用公鑰操作資料屬於加密
2、使用私鑰操作資料屬於簽名
3、公鑰和私鑰可以互相加解密
4、不同格式的證書之間可以互相轉換
5、公鑰可以對外公開,但是私鑰千萬不要洩露,要妥善儲存
注意:在我們備份證書資訊的時候,最好使用.jks或者.pfx檔案進行儲存,這樣備份的證書檔案可以被完整的匯出。
我們在使用證書的時候,要根據不同平臺,不同應用的要求,轉換成不同的格式進行使用。
DER、CRT、CER、PEM格式的證書及轉換
一、證書和編碼
X.509證書,其核心是根據RFC 5280編碼或數字簽名的數字文件。
實際上,術語X.509證書通常指的是IETF的PKIX證書和X.509 v3證書標準的CRL 檔案,即如RFC 5280(通常稱為PKIX for Public Key Infrastructure(X.509))中規定的。
二、X509檔案擴充套件
我們首先要了解的是每種型別的副檔名。 很多人不清楚DER,PEM,CRT和CER結尾的檔案是什麼,更有甚者錯誤地說是可以互換的。 在某些情況下,某些可以互換,最佳做法是識別證書的編碼方式,然後正確標記。 正確標籤的證書將更容易操縱
三、編碼--決定副檔名方式
1).DER 副檔名
.DER = DER擴充套件用於二進位制DER編碼證書。
這些檔案也可能承載CER或CRT擴充套件。 正確的說法是“我有一個DER編碼的證書”不是“我有一個DER證書”。
2).PEM 副檔名
.PEM = PEM擴充套件用於不同型別的X.509v3檔案,是以“ - BEGIN ...”字首的ASCII(Base64)資料。
3)常見的擴充套件
3.1).CRT 副檔名
.CRT = CRT擴充套件用於證書。 證書可以被編碼為二進位制DER或ASCII PEM。 CER和CRT擴充套件幾乎是同義詞。 最常見的於Unix 或類Unix系統。
3.2).CER副檔名
CER = .crt的替代形式(Microsoft Convention)您可以在微軟系統環境下將.crt轉換為.cer(.both DER編碼的.cer,或base64 [PEM]編碼的.cer)。
.cer副檔名也被IE識別為 一個執行MS cryptoAPI命令的命令(特別是rundll32.exe cryptext.dll,CryptExtOpenCER),該命令顯示用於匯入和/或檢視證書內容的對話方塊。
3.3).KEY 副檔名
.KEY = KEY副檔名用於公鑰和私鑰PKCS#8。 鍵可以被編碼為二進位制DER或ASCII PEM。
四、常見的OpenSSL證書操作
證書操作有四種基本型別。檢視,轉換,組合和提取。
1)檢視證書
即使PEM編碼的證書是ASCII,它們是不可讀的。這裡有一些命令可以讓你以可讀的形式輸出證書的內容;
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編碼證書”中的命令。
12626:error:0906D06C:PEMroutines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTEDCERTIFICATE
unable to load certificate1.2)檢視DER編碼證書
openssl x509 -in certificate.der -inform der -text -noout
如果您遇到以下錯誤,則表示您嘗試使用DER編碼證書的命令檢視PEM編碼證書。在“檢視PEM編碼的證書”中使用命令
unable to load certificate13978: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)轉換證書格式
轉換可以將一種型別的編碼證書存入另一種。(即PEM到DER轉換)
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基礎設施組合到單個檔案中是有利的。一個常見的例子是將私鑰和公鑰兩者結合到相同的證書中。
組合金鑰和鏈的最簡單的方法是將每個檔案轉換為PEM編碼的證書,然後將每個檔案的內容簡單地複製到一個新檔案中。這適用於組合檔案以在Apache中使用的應用程式。
4)證書提取
一些證書將以組合形式出現。 一個檔案可以包含以下任何一個:證書,私鑰,公鑰,簽名證書,證書頒發機構(CA)和/或許可權鏈。
五、原文連結
https://support.ssl.com/index.php?/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them