原文地址:http://blog.csdn.net/anxuegang/article/details/6157927
證書主要的文件類型和協議有: PEM、DER、PFX、JKS、KDB、CER、KEY、CSR、CRT、CRL 、OCSP、SCEP等。
PEM – Openssl使用 PEM(Privacy Enhanced Mail)格式來存放各種信息,它是 openssl 默認采用的信息存放方式。Openssl 中的 PEM 文件一般包含如下信息:
- 內容類型:表明本文件存放的是什么信息內容,它的形式為“——-BEGIN XXXX ——”,與結尾的“——END XXXX——”對應。
- 頭信息:表明數據是如果被處理后存放,openssl 中用的最多的是加密信息,比如加密算法以及初始化向量 iv。
- 信息體:為 BASE64 編碼的數據。可以包括所有私鑰(RSA 和 DSA)、公鑰(RSA 和 DSA)和 (x509) 證書。它存儲用 Base64 編碼的 DER 格式數據,用 ascii 報頭包圍,因此適合系統之間的文本模式傳輸。
使用PEM格式存儲的證書:
—–BEGIN CERTIFICATE—–
MIICJjCCAdCgAwIBAgIBITANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCVVMx
………
1p8h5vkHVbMu1frD1UgGnPlOO/K7Ig/KrsU=
—–END CERTIFICATE—–
使用PEM格式存儲的私鑰:
—–BEGIN RSA PRIVATE KEY—–
MIICJjCCAdCgAwIBAgIBITANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCVVMx
………
1p8h5vkHVbMu1frD1UgGnPlOO/K7Ig/KrsU=
—–END RSA PRIVATE KEY—–
使用PEM格式存儲的證書請求文件:
—–BEGIN CERTIFICATE REQUEST—–
MIICJjCCAdCgAwIBAgIBITANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCVVMx
………
1p8h5vkHVbMu1frD1UgGnPlOO/K7Ig/KrsU=
—–END CERTIFICATE REQUEST—–
DER – 辨別編碼規則 (DER) 可包含所有私鑰、公鑰和證書。它是大多數瀏覽器的缺省格式,並按 ASN1 DER 格式存儲。它是無報頭的 - PEM 是用文本報頭包圍的 DER。
PFX 或 P12 – 公鑰加密標准 #12 (PKCS#12) 可包含所有私鑰、公鑰和證書。其以二進制格式存儲,也稱為 PFX 文件。通常可以將Apache/OpenSSL使用的“KEY文件 + CRT文件”格式合並轉換為標准的PFX文件,你可以將PFX文件格式導入到微軟IIS 5/6、微軟ISA、微軟Exchange Server等軟件。轉換時需要輸入PFX文件的加密密碼。
JKS – 通常可以將Apache/OpenSSL使用的“KEY文件 + CRT文件”格式”轉換為標准的Java Key Store(JKS)文件。JKS文件格式被廣泛的應用在基於JAVA的WEB服務器、應用服務器、中間件。你可以將JKS文件導入到TOMCAT、 WEBLOGIC 等軟件。
KDB – 通常可以將Apache/OpenSSL使用的“KEY文件 + CRT文件”格式轉換為標准的IBM KDB文件。KDB文件格式被廣泛的應用在IBM的WEB服務器、應用服務器、中間件。你可以將KDB文件導入到IBM HTTP Server、IBM Websphere 等軟件。
CSR - 證書請求文件(Certificate Signing Request)。生成 X509 數字證書前,一般先由用戶提交證書申請文件,然后由 CA 來簽發證書。大致過程如下(X509 證書申請的格式標准為 pkcs#10 和 rfc2314):
- 用戶生成自己的公私鑰對;
- 構造自己的證書申請文件,符合 PKCS#10 標准。該文件主要包括了用戶信息、公鑰以及一些可選的屬性信息,並用自己的私鑰給該內容簽名;
- 用戶將證書申請文件提交給 CA;
- CA 驗證簽名,提取用戶信息,並加上其他信息(比如頒發者等信息),用 CA 的私鑰簽發數字證書;
- 說明:數字證書(如x.509)是將用戶(或其他實體)身份與公鑰綁定的信息載體。一個合法的數字證書不僅要符合 X509 格式規范,還必須有 CA 的簽名。用戶不僅有自己的數字證書,還必須有對應的私鑰。X509v3 數字證書主要包含的內容有:證書版本、證書序列號、簽名算法、頒發者信息、有效時間、持有者信息、公鑰信息、頒發者 ID、持有者 ID 和擴展項。
OCSP – 在線證書狀態協議(OCSP,Online Certificate Status Protocol,rfc2560)用於實時表明證書狀態。OCSP 客戶端通過查詢 OCSP 服務來確定一個證書的狀態,可以提供給使用者一個或多個數字證書的有效性資料,它建立一個可實時響應的機制,讓用戶可以實時確認每一張證書的有效性,解決由CRL引發的安全問題。。OCSP 可以通過 HTTP協議來實現。rfc2560 定義了 OCSP 客戶端和服務端的消息格式。
CER - 一般指使用DER格式的證書。
CRT - 證書文件。可以是PEM格式。
KEY - 一般指PEM格式的私鑰文件。
CRL - 證書吊銷列表 (Certification Revocation List) 是一種包含撤銷的證書列表的簽名數據結構。CRL 是證書撤銷狀態的公布形式,CRL 就像信用卡的黑名單,用於公布某些數字證書不再有效。CRL 是一種離線的證書狀態信息。它以一定的周期進行更新。CRL 可以分為完全 CRL和增量 CRL。在完全 CRL 中包含了所有的被撤銷證書信息,增量 CRL 由一系列的 CRL 來表明被撤銷的證書信息,它每次發布的 CRL 是對前面發布 CRL 的增量擴充。基本的 CRL 信息有:被撤銷證書序列號、撤銷時間、撤銷原因、簽名者以及 CRL 簽名等信息。基於 CRL 的驗證是一種不嚴格的證書認證。CRL 能證明在 CRL 中被撤銷的證書是無效的。但是,它不能給出不在 CRL 中的證書的狀態。如果執行嚴格的認證,需要采用在線方式進行認證,即 OCSP 認證。一般是由CA簽名的一組電子文檔,包括了被廢除證書的唯一標識(證書序列號),CRL用來列出已經過期或廢除的數字證書。它每隔一段時間就會更新,因此必須定期下載該清單,才會取得最新信息。
SCEP - 簡單證書注冊協議。基於文件的證書登記方式需要從您的本地計算機將文本文件復制和粘貼到證書發布中心,和從證書發布中心復制和粘貼到您的本地計算機。 SCEP可以自動處理這個過程但是CRLs仍然需要手工的在本地計算機和CA發布中心之間進行復制和粘貼。
PKCS7 – 加密消息語法(pkcs7),是各種消息存放的格式標准。這些消息包括:數據、簽名數據、數字信封、簽名數字信封、摘要數據和加密數據。
PKCS12 – pkcs12 (個人數字證書標准)用於存放用戶證書、crl、用戶私鑰以及證書鏈。pkcs12 中的私鑰是加密存放的。