1. 程式人生 > >證書,私鑰,公鑰,pfx,keystore,pem,der 都是什麼?

證書,私鑰,公鑰,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)。

可參考:https://support.comodo.com/index.php?/Knowledgebase/Article/View/361/17/how-do-i-convert-crt-file-into-the-microsoft-cer-format

.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編碼證書”中的命令。
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)轉換證書格式

轉換可以將一種型別的編碼證書存入另一種。(即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