OpenSSL原始碼簡介

2022-03-23 13:02:40 字數 3014 閱讀 8484

x509是由國際電信聯盟(itu-t)制定的數字證書標準;包含公鑰和使用者標誌符、ca等;

x509是數字證書的規範,p7和p12是兩種封裝形式;x.509是常見通用的證書格式。所有的證書都符合為public key infrastructure 制定的itu-t x509國際標準。

pkcs # 7常用的字尾是: p7b, p7c, spc

pkcs # 12常用的字尾有: p12 ,pfx

x.509 der編碼(ascii)的字尾是: der cer crt

x.509pem編碼(base64)的字尾是:pem cer crt

pem格式是經過base64編碼的證書,der格式是der編碼的證書;

證書入和匯出操作支援四種檔案格式。

cer/crt證書: 用於儲存公鑰證書的檔案格式,它是二進位制存放的,不含私鑰,不能匯入到個人儲存區,因為個人儲存區儲存與私鑰相關的數字證書;cer、crt格式只是乙個字尾,該字尾的證書可以pem編碼的也可以是der編碼的; 

pfx/p12證書:含有證書和對應的 私鑰,可以匯入ie的個人證書儲存區;

p12格式的證書一般用於證書的分發,裡面包含了證書和對應的私鑰;

由於apache proxy是pem格式prefer的,不支援der經編碼的證書,因此,要通過證書的編碼轉換,把der編碼轉換為pem編碼,再經apache處理。

證書的編碼為der編碼,但der編碼的檔案是二進位制格式不利於讀寫和傳播,所以對der編碼的資料進行base64編碼形成了pem。

由rsa數字安全公司但呢個制定的公鑰密碼學標準,包含證書申請、更新、crl、ds等;

其中pkcs7,定義了通用的訊息語法,含數字簽名和加密,與pem相容,互相轉化;

pkcs12,描述個人資訊交換語法,打包公鑰、私鑰、證書和其他資訊;

pkcs 全稱是 public-key cryptography standards ,是由 rsa 實驗室與其它安全系統開發商為促進公鑰密碼的發展而制訂的一系列標準,pkcs 目前共發布過 15 個標準。 常用的有:

pkcs#7 cryptographic message syntax standard

pkcs#10 certification request standard

pkcs#12 personal information exchange syntax standard

比較:p7一般是把證書分成兩個檔案,乙個公鑰乙個私鑰,有pem和der兩種編碼方式。pem比較多見,就是純文字的,p7一般是分發公鑰用,看到的就是一串可見字串,副檔名經常是.crt,.cer,.key等。der是二進位制編碼。

p12是把證書壓成乙個檔案,.pfx 。主要是考慮分發證書,私鑰是要絕對保密的,不能隨便以文字方式散播。所以p7格式不適合分發。.pfx中可以加密碼保護,所以相對安全些。

在實踐中要中,使用者證書都是放在usb key中分發,伺服器證書經常還是以檔案方式分發。伺服器證書和使用者證書,都是x509證書,就是裡面的屬性有區別。

1.簡介

開源ssl安全工具,包含ssl協議實現,大量軟演算法(對稱/非對稱/摘要),非對稱演算法金鑰生成,asn.1編譯碼庫、證書請求(pscs10) 編譯碼,數字證書、crl編譯碼,ocsp協議,pkcs7標準實現和pkcs12個人數字證書格式實現等功能;

使用c語言開發,跨平台優越;

2.原始碼框架

主要由eay基礎函式庫、ssl庫、工具、demo和test組成;

eay庫原始碼,在crypto目錄下,包含:

1) asn.1 der編碼解碼(crypto/asn.1目錄),包含數字證書請求,crl吊銷列表及pkcs8編譯碼函式;

2) 抽象io(bio,crypto/bio目錄),包含各種輸入輸出抽象,檔案、記憶體、stdio、socket、ssl;

3) 大數運算(crypto/bn目錄),用於非對稱演算法金鑰生成和各種加解密;

4) 字元快取(crypto/buffer目錄);

5) 配置檔案讀取(crypto/conf 目錄),主要配置檔案為openssl.cnf。本目錄實現改格式配置檔案的讀取;

6) dso動態共享物件(crypto/dso目錄),抽象各平台動態庫載入函式,提供統一介面;

7) 硬體引擎(crypto/engine目錄),提供了規定介面;

8) 錯誤處理(cryto/err目錄),提供處理介面;以堆疊顯示錯誤;

9) 對稱演算法、非對稱演算法及摘要演算法封裝(crypto/evp目錄)

10) hmac(crypto/hmac目錄),實現基於對稱演算法的mac;

11) hash表(crypto/lhash目錄),實現雜湊表資料結構;

13) pem檔案格式處理(crypto/pem目錄),生成和讀取pem檔案;

14) pkcs7訊息語法(crypto/pkcs7目錄),實現構造和解析pkcs7訊息;

15) pkcs12個人證書格式(crypto/pkcs12目錄),實現pkcs12證書構造和解析;

16) 佇列(crypto/pqueue目錄),實現佇列資料結構,用於dtls;

17) 隨機數(crypto/rand目錄),實現偽隨機數生成,支援使用者自定義;

18) 堆疊(crypto/rand目錄),實現堆疊資料結構;

19) 執行緒支援(crypto/threads),openssl支援多執行緒,但是使用者必須實現相關介面;

20) 文字資料庫(crypto/txt_db目錄);

21) x509數字證書(crypto/x509目錄),包括數字證書申請、證書和crl構造解析和簽名驗證;

22) 對稱演算法(crypto/aes、crypto/bf、crypto/cast、crypto/omp和crypto/des等);

23) 非對稱演算法(crypto/dh、crypto/dsa、crytpo/ec和crypto/ecdh);

24) 摘要演算法(crypto/md2/4/5/sha)以及金鑰交換/認證演算法(crypto/dh和crypto/krb5);

ssl庫源**在ssl目錄下,包含sslv2,sslv3,tlsv1和dtls的原始碼;包含客戶端原始碼、伺服器原始碼、通用、底層包、方法以及協議相關金鑰計算原始碼;

摘自:

OpenSSL原始碼目錄說明

本文摘自 趙春平 openssl程式設計 1.0 其中紅色字型是自己的學習過程中暫時不懂的地方。openssl源 主要有eay庫 什麼是eay庫?ssl庫 工具原始碼 範例原始碼以及測試原始碼組成。eay庫是基礎的庫函式,提供了很多功能。源 放在crypto目錄下。包括如下內容 1 asn.1 de...

Linux下原始碼安裝OpenSSL

開發環境為ubuntu 12.04,預設安裝了openssl了,可以通過 which openssl來檢視安裝位置,但是在 usr include等目錄下都找不到openssl相關的標頭檔案,所以需要從原始碼重新安裝openssl。wget tar zxvf openssl 1.0.0l.tar.g...

windows下編譯openssl原始碼

需要安裝軟體 軟體名openssl原始碼 perl for win32 masm 8.0版以上 檢查perl是否安裝成功 執行cmd命令,使用cd命令指向perl安裝目錄的eg檔案,並且執行 perl example.pl 應能顯示 hello from activeperl 表明perl安裝成功 ...