1. 程式人生 > >openssl數字證書常見格式與協議介紹

openssl數字證書常見格式與協議介紹

證書主要的檔案型別和協議有: PEM、DER、PFX、JKS、KDB、CER、KEY、CSRCRTCRL 、OCSP、SCEP等。

PEM – Openssl使用 PEM(Privacy Enhanced Mail)格式來存放各種資訊,它是 openssl 預設採用的資訊存放方式。Openssl 中的 PEM 檔案一般包含如下資訊:

  1. 內容型別:表明本檔案存放的是什麼資訊內容,它的形式為“——-BEGIN XXXX ——”,與結尾的“——END XXXX——”對應。
  2. 頭資訊:表明資料是如果被處理後存放,openssl 中用的最多的是加密資訊,比如加密演算法以及初始化向量 iv。
  3. 資訊體:為 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):

  1. 使用者生成自己的公私鑰對;
  2. 構造自己的證書申請檔案,符合 PKCS#10 標準。該檔案主要包括了使用者資訊、公鑰以及一些可選的屬性資訊,並用自己的私鑰給該內容簽名;
  3. 使用者將證書申請檔案提交給 CA;
  4. CA 驗證簽名,提取使用者資訊,並加上其他資訊(比如頒發者等資訊),用 CA 的私鑰簽發數字證書;
  5. 說明:數字證書(如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 中的私鑰是加密存放的。