CRL校驗與OCSP套封

上一篇日誌利用CSR文件生成自簽名證書,接下來可以進行CRL校驗和OCSP校驗,兩者都是校驗證書的吊銷狀態,區別在於校驗的方式不同,CRL需要校驗方從CRL分發點下載CRLs吊銷列表文件,OCSP則是一種在線證書狀態協議,校驗方發送OCSP請求查詢證書的吊銷狀態,然後接收帶有吊銷狀態信息的OCSP響應完成校驗。

 

CRL校驗

CRL標準屬於TLS/SSL協議的一部分,CA機構會把所有自己簽發的已被吊銷的證書放到一個文件CRLs中,包括證書的序列號和吊銷原因,身份校驗方下載完證書吊銷列表後,根據序列號查找來判斷證書的吊銷狀態。

手動校驗

手動校驗的方式需要我們從證書中找到CRL分發點,然後從這個分發點下載CRL文件,從中根據證書序列號查找證書是否存在吊銷列表中。

如果你的證書是cer格式的,可以先格式轉換成pem格式,然後繼續使用openssl命令行,打開這個pem格式的證書。查看證書可以看到很多的信息,如服務器公鑰,使用的簽名算法等,我們要尋找的是它的CRL分發點,即找到CRL Distribution Points:

前面說過,CRL是一個文件,在網上有一個URL地址,這個地址在證書的擴展項中,找到這個地址後,我們就可以直接訪問下載CRLs吊銷列表,或者用wget命令下載。從上圖例子可以看到,我們從csdn首頁獲取的服務器證書,其CRL分發點爲http://cdp.geotrust.com/GeoTrustRSACA2018.crl,下載得到CRL文件:

然後我們用crl子命令來打開這個CRL吊銷列表:

crl –inform DER –text –noout –in GeoTrustRSACA2018.crl

從圖中可以看到,文件裏保存了許多證書的序列號Serial Number,以及它們的吊銷日期,最後就是根據要校驗的證書序列號在裏面尋找是否有匹配,有即表明該證書已經處於被吊銷狀態。

自動校驗

自動校驗在Windows的CMD下用certutil子命令加參數-verify,在openssl下則是使用verify子命令。這裏用CMD舉例:

certutil是命令行證書命令,可以用它來完成許多證書服務操作。通過校驗後,可以看到最後的校驗結果:“證書是一個最終實體證書,通過了分支證書吊銷檢查。”

 

OCSP套封

前面說過,OCSP即Online Certificate Status Protocol,在線證書狀態協議,通過發送OCSP請求來獲取證書的吊銷狀態,OCSP服務提供方根據查詢請求條件(如證書序列號),返回該證書的吊銷狀態。OCSP逐漸取代CRL的一個很重要的原因是,CRL校驗需要身份校驗方下載CRL證書吊銷列表,隨着某一CA機構吊銷的證書越來越多,這個吊銷列表將會變得越來越大,影響了下載速度,由於CRL校驗是同步操作(OCSP也是,不過OCSP速度快許多,因爲請求發送和響應的數據量很小),會阻塞TLS/SSL握手過程,從而影響了速度。

不過COSP服務也是有一些缺點的,第一是安全性問題,在OCSP響應結構中有certStatus參數保存的是證書的狀態,分別爲good,revoked和unknown三種,攻擊者可以通過篡改每一次OCSP響應,一直髮送證書狀態爲“good”的OCSP響應。第二個問題就是隱私問題,用戶每訪問一個網站,都會發送不同的OCSP請求,如果這些請求被攔截,用戶的瀏覽習慣可能就會被泄漏。

爲了解決上述的問題,在部署HTTPS服務時及要用到OCSP套封。

套封過程

使用OCSP套封技術,需要用到status_request擴展,即客戶端(瀏覽器)告訴服務器,我不送OCSP請求,由你來發送。

  1. 第一步,在瀏覽器和服務器建立連接階段就由瀏覽器發送了這個status_request擴展給服務器。
  2. 之後進行證書吊銷狀態校驗時,由服務器向OCSP服務提供方發送OCSP請求,也由服務器來接收OCSP響應。
  3. 服務器接收到OCSP響應後,向客戶端(瀏覽器)發送CertiticateStatus子消息,裏面包含有OCSP響應。
  4. 如果服務器接收到的OCSP響應異常,或者無法處理,服務器可以選擇不向瀏覽器發送CertificateStatus子消息,若瀏覽器沒有接收到服務器的響應,可以選擇自行向OCSP服務提供方發送請求,即回到了標準的OCSP校驗。

由上述步驟可以看出,OCSP套封解決了用戶瀏覽習慣隱私泄露問題,因爲用戶訪問一個網站時,OCSP請求是由服務器發送給COSP服務提供方,服務器接收到OCSP響應後再發送回客戶端(瀏覽器)。

 

OCSP校驗

最後到OCSP校驗,也就是通過發送OCSP請求來校驗證書的吊銷狀態,首先我們要從證書中獲取OCSP地址,因爲前面說過,OCSP和CRL一樣有一個URL地址,它們都是服務提供方,獲得這個OCSP服務地址,才能知道請求發送到哪裏去:

得到OCSP地址後,就可以發送校驗請求:

從輸出信息可以看到OCSP Request Data是請求信息,下面的OCSP Response Data是響應信息,黃字處Cert Status標識的就是證書的狀態,good表示證書沒有吊銷,校驗成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章