在線證書狀態協議

在線證書狀態協議(英語:Online Certificate Status Protocol,縮寫:OCSP)是一個用於獲取X.509數字證書撤銷狀態的網際協議[1]RFC 6960中定義,作為證書吊銷列表(CRL)的替代品解決了在公開密鑰基礎建設(PKI)中使用證書吊銷列表而帶來的多個問題。[2]協議數據傳輸過程中使用ASN.1編碼,並通常建立在HTTP協議上,此消息類型分為「請求消息」和「響應消息」,因此致OCSP服務器被稱為「OCSP響應端」。

與證書吊銷列表(CRL)的比較

  • 由於OCSP響應包含的信息少於典型的證書吊銷列表(CRL),因此減輕了網絡和客戶端資源的負擔;[3]
  • 由於OCSP響應端需要解析的信息更少,客戶端提供的用於解析消息的庫函數更簡單;[4]
  • OCSP中,服務器可以記錄主機在何時驗證過特定的證書,由於請求不強制加密,相關信息可能被第三方獲取。[1]

基本PKI應用場景

  1. Alice與Bob使用Carol頒發的數字證書。該場景中Carol是證書頒發機構(CA);
  2. Alice向Bob發送其由Carol頒發的數字證書,並發出請求建立連接的申請;
  3. Bob擔心Alice的私鑰已經泄露,因此向Carol發送「OCSP請求」消息並包含Alice的數字證書序列號;
  4. Carol的OCSP響應端從Bob發送的消息中獲取數字證書的序列號,並在CA數據庫中查找該數字證書的狀態;
  5. Carol向Bob發送由其私鑰簽名的消息「OCSP響應」,並包含證書狀態正常的信息;
  6. 由於Bob事先已經安裝了Carol的數字證書,因此Bob使用Carol的公鑰驗證消息簽名並獲取到Alice的數字證書狀態信息;
  7. Bob決定與Alice進行通信。

協議信息

由數字證書認證機構運行的OCSP服務器會對請求返回經過其簽名的證書狀態信息,分別為:正常(Good)、已廢除(Revoked)、未知(Unknown)。如果有無法處理的請求,則會返回一個錯誤碼。

OCSP支持附加擴展以便對PKI解決方案進行定製,如在響應中包含SCT信息來驗證相關證書是否通過了公開審計。[5]

OCSP在極端情況下可能遭受重放攻擊。中間人可以捕獲一個已簽名的「正常」響應,並在之後的一段時間重放這個響應來通過客戶端的驗證,即使在這段時間裡證書可能已經被撤銷。[6]為避免這個問題,OCSP允許客戶端在請求中加入一個隨機數並要求服務器在響應中包含這個隨機數。但是由於大多數客戶端和服務器還沒有支持這個擴展,OCSP響應的較長有效期可能給重放攻擊留下機會並藉此威脅整個驗證系統。

OCSP可以支持多於一級的CA結構。請求被轉發到對應的服務器節點並查詢狀態,從而無須使用根CA的OCSP請求。

用於簽名響應的私鑰不需要和簽發證書的私鑰相同。證書的簽發者可能委託其他機構響應OCSP請求。在這種情況下,服務器的證書必須由簽發者進行驗證,並在擴展內容中包括相關信息標識該證書可用於OCSP響應的簽名。

隱私問題

OCSP對於部分用戶來講會造成隱私問題,因為OCSP必須和一個第三方建立連接(即使這個第三方是被軟件提供商信任的)以驗證證書狀態。對此,OCSP裝訂是一個無須和CA發生連接的替選方案。

批評

OCSP不是緩解HTTPS服務器私鑰泄露的可靠方法,因為攻擊者竊取私鑰後,再濫用私鑰進行中間人攻擊(MITM)時,往往也會干擾客戶的OCSP查詢,因為如果查詢超時,大多數客戶端將忽略OCSP,導致OCSP機制失效無法及時查詢到證書吊銷信息。[7]

瀏覽器支持情況

對於OCSP在主流瀏覽器中的支持:

需要注意的是,Google Chrome在2012年由於延遲和隱私問題禁用了OCSP的默認啟用,[13]改用自己的更新機制來同步證書撤銷情況。[14]

開源實現

目前的開源實現有:

  • XiPKI,基於OSGi,使用Java語言編寫。[15]

參見

參考鏈接

  1. ^ 1.0 1.1 A., Jesin. How To Configure OCSP Stapling on Apache and Nginx. Community Tutorials. Digital Ocean, Inc. 2014-06-12 [2015-03-02]. (原始內容存檔於2016-08-10). 
  2. ^ OCSP Stapling. GlobalSign Support. GMO GlobalSign Inc. 2014-08-01 [2015-03-02]. (原始內容存檔於2019-06-08). 
  3. ^ Gibson, Steve. Security Certificate Revocation Awareness: The case for "OCSP Must-Staple". Gibson Research Corporation. [2015-03-02]. (原始內容存檔於2016-04-15). 
  4. ^ Keeler, David. OCSP Stapling in Firefox. Mozilla Security Blog. Mozilla Foundation. 2013-07-29 [2015-03-02]. (原始內容存檔於2016-09-11). 
  5. ^ Certificate Transparency. How Certificate Transparency Works. Certificate Transparency. [2016-06-09]. (原始內容存檔於2016-06-10) (英語). 
  6. ^ RFC 6960, section 5, Security Considerations
  7. ^ No, Don't Enable Revocation Checking. 2014-04-19 [2014-04-24]. (原始內容存檔於2016-08-12). 
  8. ^ What’s New in Certificate Revocation in Windows Vista and Windows Server 2008. Microsoft. [2016-05-09]. (原始內容存檔於2017-12-19). 
  9. ^ Mozilla Bug 110161 - Enable OCSP by Default. Mozilla. 2007-10-01 [2010-07-18]. (原始內容存檔於2016-03-15). 
  10. ^ Wisniewski, Chester. Apple users left to defend themselves against certificate attacks. Sophos英語Sophos. 2011-03-26 [2011-03-26]. (原始內容存檔於2020-10-31). 
  11. ^ Pettersen, Yngve Nysæter. Introducing Extended Validation Certificates. Opera Software. 2006-11-09 [2010-01-08]. (原始內容存檔於2010-02-10). 
  12. ^ Pettersen, Yngve Nysæter. Rootstore newsletter. Opera Software. 2008-07-03 [2010-01-08]. (原始內容存檔於2008-11-18). 
  13. ^ Langley, Adam. Revocation checking and Chrome's CRL. 2012-02-05 [2015-01-30]. (原始內容存檔於2012-02-12). 
  14. ^ "Chrome does certificate revocation better"頁面存檔備份,存於網際網路檔案館), April 21, 2014, Larry Seltzer, ZDNet
  15. ^ xipki/xipki · GitHub. Github.com. [2016-01-24]. (原始內容存檔於2017-08-31). 

外部連結