天天看點

證書檔案編碼格式介紹

OpenSSL中雖然使用PEM作為基本的檔案編碼格式,但是,由于不同的對象其封裝和标準格式不太一樣,是以經常會導緻讀者産生迷惑。

一、資料編碼格式

資訊轉換為ASCII碼或其他編碼方式,比如采用DER編碼。

使用對稱加密算法加密經過編碼的資訊。

使用BASE64對加密碼後的資訊進行編碼。

使用一些頭定義對資訊進行封裝,主要包含了進行正确解碼需要的資訊,頭定義的格式形式如下:

Proc-Type:4,ENCRYPTED

DEK-Info:cipher-name,ivec

其中,第一個頭資訊标注了該檔案是否進行了加密,該頭資訊可能的值包括ENCRYPTED(資訊已經加密和簽名),MIC-ONLY(資訊經過資料簽名但沒有加密),MIC-CLEAR(資訊經過數字簽名但是沒有加密,也沒有進行編碼,可使用非PEM格式閱讀),以及CLEAR;第二個頭資訊标注了加密的算法及對稱加密塊算法使用的初始向量。

在這些資訊的前面加上如下形式頭标注資訊:

---BEGIN PRIVACY-ENHANCED MESSAGE---

在這些資訊的後面加上如下形尾标注資訊:

---END PRIVACY-ENHANCED MESSAGE---

OpenSSL的PEM編碼基本上是基于DER編碼之上的,也就是說,它在上述第一步采用的是DER編碼,是以,從本質上來說,OpenSSL的PEM編碼就是在DER編碼基礎上進行BASE64編碼,然後添加一些頭尾資訊組成的。

二、證書标準

三、證書封裝

四、密鑰編碼

---BEGIN RSA PRIVATE KEY---

DEK-Info:DES-ED3-CBC,86B0167E005535D2

……(加密内容密鑰部分)……

---END RSA PRIVATE KEY---

以上的PEM編碼的是RSA(RSA PRIVATE KEY)私鑰,該密鑰經過了加密(ENCRYPTED),使用的是3DES的CBC方式(DES-EDE3-CBC),使用的IV向量是“86B0167E005535D2”。

五、其他标準

本文轉自 Tenderrain 51CTO部落格,原文連結:http://blog.51cto.com/tenderrain/2047788

繼續閱讀