2026年8月24日

數碼證書撤銷清單檢查:如何在信任一張證書之前完成核驗

Summary · 10 min read

了解如何用 OpenSSL、瀏覽器和 OCSP 進行數碼證書撤銷清單檢查,比較 CRL 與 OCSP 的差異,並維持電子簽署合規。

數碼證書撤銷清單檢查會告訴你,憑證授權機構(CA)是否已在證書原定到期之前將其撤銷。你可以從證書中列出的分發點下載 CRL,在其中搜尋該證書的序號,或直接使用 OpenSSL 的 verify -crl_check 指令。瀏覽器和作業系統會在 TLS 交握期間自動處理這項檢查,但任何管理公鑰基礎設施(PKI)或核驗文件簽署證書的人,都應該理解手動檢查的步驟。本指南會說明 CRL 是甚麼、為甚麼撤銷檢查很重要、如何用 OpenSSL 及其他工具執行檢查,以及 CRL 與 OCSP 的比較——讓你可以判斷哪種方法最適合自己的工作流。在任何檢查結果被用於生產環境之前,請務必對照最新版 RFC 5280、CA 政策及廠商文件確認細節。

甚麼是憑證撤銷清單(CRL)?

憑證撤銷清單(CRL)是由 CA 簽發並發布的、帶有簽名和時間戳的文件,用以公告哪些數碼證書已在到期日期之前被撤銷。CRL 在 RFC 5280 中定義,內容包含簽發者名稱、清單生成日期(「this update」)、下一份清單的預計發布日期(「next update」),以及被撤銷證書序號的清單——每個序號都附有撤銷日期和一個可選原因代碼,例如金鑰外洩、CA 遭入侵或停止營運。

CA 撤銷證書的原因有多種:私鑰已遭外洩、證書被誤發、訂戶已停止營運,或證書正被新證書取代。如果沒有渠道得知這些撤銷資訊,依賴方就會繼續信任一張證書直到它到期——即使 CA 早已宣告它不可信。

有幾個實務細節值得留意:

  • 基礎 CRL(base CRL)列出 CA 已知的全部被撤銷證書;增量 CRL(delta CRL)只列出相對上一份基礎 CRL 的變化,藉此降低頻寬與解析開銷。
  • CRL 由簽發它的 CA 簽名,因此其完整性可以被獨立核驗。
  • 用戶端通常會把 CRL 快取至其「next update」時間,之後再下載新副本。

CRL 只是 PKI 撤銷機制的其中一半,OCSP 提供另一半。兩者回答同一個問題:這張證書此刻是否仍然可信?想更全面了解簽發證書並發布 CRL 的機構,請參閱我們的面向瀏覽器與電子簽署的憑證授權機構清單

為甚麼需要檢查證書撤銷狀態

檢查撤銷狀態,就是「證書看起來有效」與「證書確實有效」這兩種信任之間的分別。一張證書可以通過基本的信任鏈檢查——簽發者正確、日期在有效期內、簽名無誤——但仍然已被撤銷。如果你跳過撤銷檢查,就等同把所有尚未到期的證書都視為有效,這會令撤銷機制的存在完全失去意義。

撤銷檢查最常見的關鍵場景包括:

  • 金鑰外洩。 攻擊者一旦取得私鑰,CA 便會撤銷對應的證書,讓依賴方停止接受它。若不做撤銷檢查,你就會繼續信任用被盜私鑰作出的簽名。
  • CA 誤發。 CA 可能發現某張證書發給了錯誤的實體,或包含錯誤的屬性。撤銷就是 CA 事後撤回該證書的手段。
  • 停止營運。 公司倒閉或網域易主時,綁定在舊實體上的證書應被撤銷,以免被他人重用。
  • 文件與電子簽署核驗。 經數碼簽署的 PDF 內嵌一張證書。如果該證書在簽署之前(或在簽署與核驗之間)被撤銷,簽名的可信度便會改變。想深入了解更完整的核驗工作流,請閱讀我們關於如何核驗商業數碼簽名的指南。

一個容易忽略的細節:被撤銷的證書不等於已到期的證書。到期是自動的、基於日期的;撤銷則是 CA 的主動行為。因此只檢查到期與否並不足夠。關於證書生命周期的背景,可參閱我們關於數碼證書會否到期的文章。

如何對照 CRL 檢查證書

具體步驟因你所用的工具而異,但工作流是一致的:在證書中找出 CRL 分發點(CDP),下載 CRL,然後搜尋該證書的序號。

第 1 步:找出 CRL 分發點。 每張支援 CRL 檢查的證書都帶有 CRL Distribution Points 延伸項目,內含一個或多個 URL。用 OpenSSL 提取:

```

openssl x509 -in certificate.pem -noout -text | grep -A 4 "CRL Distribution"

```

第 2 步:下載 CRL。curlwget 從你找到的 URL 取得 CRL。CRL 通常以 DER 格式分發:

```

curl -o crl.der http://crl.example.com/intermediate.crl

```

第 3 步:查看 CRL 內容。 轉換並檢視 CRL,查看其簽發者、更新時間與被撤銷的序號:

```

openssl crl -in crl.der -inform DER -text -noout

```

第 4 步:對照 CRL 核驗證書。 把 CA 證書與 CRL 合併成一個檔案,然後以 -crl_check 參數執行 OpenSSL 的 verify 指令:

```

cat ca.crt crl.pem > ca-crl.pem

openssl verify -crl_check -CAfile ca-crl.pem certificate.pem

```

如果證書的序號出現在 CRL 中,OpenSSL 會回報撤銷錯誤。如果 CRL 已過期(超過其「next update」時間)或無法存取,檢查便會失敗——這是安全的預設行為。

瀏覽器與作業系統層面的檢查。 主流瀏覽器會在 TLS 期間自動執行撤銷檢查,不過現時許多瀏覽器依賴 OCSP 或專屬的更新機制,而非下載完整的 CRL。在 Windows 上,certutil -dump crl.crl 可顯示 CRL 內容,雙擊 .crl 檔案則會開啟系統內建的檢視器。如果你想在瀏覽器環境中信任一張證書之前先核驗它,請參閱我們關於如何檢查數碼證書的指南。

檢查步驟會告訴你甚麼工具
找出 CDP URLCA 在哪裡發布其 CRLopenssl x509 -text
下載 CRL目前被撤銷證書的清單curl / wget
查看 CRL簽發者、更新時間、被撤銷序號openssl crl -text
對照 CRL 核驗證書證書是否已被撤銷openssl verify -crl_check

CRL 與 OCSP:如何選擇撤銷檢查方法

CRL 和 OCSP(線上證書狀態協定,RFC 6960)回答的都是「這張證書被撤銷了嗎?」CRL 是拉取式的批次模型:用戶端下載一份清單並在本地搜尋。OCSP 是查詢式的即時模型:用戶端向回應器查詢單張證書的狀態,得到的答案為有效、已撤銷或未知。

維度CRLOCSP
運作方式用戶端下載已簽名的被撤銷序號清單用戶端向回應器查詢單張證書的狀態
延遲首次下載可能較大,之後可快取單次查詢延遲低,但需要網絡來回
新鮮度只與最後下載的 CRL 一樣新即時,受回應器快取影響
私隱CA 不知道你在檢查哪張證書回應器能看到你查詢的是哪張證書
失敗模式CRL 過期或不可達時,由用戶端決定失敗關閉或失敗放行回應器不可用時,瀏覽器通常軟失敗
最適合企業 PKI、離線或物理隔離環境、批次核驗瀏覽器 TLS、高流量的公共網頁

大多數現代瀏覽器傾向使用 OCSP(或 OCSP stapling)進行即時網頁檢查,而企業 PKI 團隊在內部 CA 部署中往往依賴 CRL——在那些環境中,未必保證能連上 OCSP 回應器。兩者是互補而非互斥的,許多用戶端會同時使用。如果你正在排查一個無法通過核驗的簽名,撤銷檢查方法是最先應核查的事項之一;我們關於數碼簽名為何無效的文章逐一分析了常見成因。

至於長期簽名核驗——即多年之後仍需證明簽名在簽署當時是有效的——撤銷數據必須與簽名一併歸檔。我們的如何確保數碼簽名的長期有效性(LTV)指南涵蓋了該場景的 LTV 檢查清單。

Nota Sign:當你的簽署平台追蹤證書狀態時

手動執行一次 CRL 或 OCSP 檢查,一次只能回答一個問題。在生產環境的簽署中,你需要的是一個把證書狀態感知整合進簽署事件本身的平台,這樣審計追蹤便會記錄簽署當刻證書的效力狀態。Nota Sign——法大大(FaDaDa)旗下的全球電子簽署平台——正是圍繞這個理念構建:每一份已簽署文件都帶有與證書有效性綁定的防篡改記錄。

它的市場成績是公開的——在 IDC 中國電子簽署市場排行中,Nota Sign 已連續多年位列第一。由於撤銷與數據駐留義務因 CA 政策和司法管轄區而異,請先對照自身需求確認細節。方案按工作流計價,而不是看人數,簽署量增長不會抬高帳單。讓 Nota Sign 帶你走一遍生產環境下的 CRL/OCSP 檢查——聯絡 Nota Sign 團隊

常見問題

Nota Sign 協助企業建立合規的協議簽署流程,所有內容均遵循嚴格的編輯方針。

發現更便捷的電子簽署方式

聯絡我們
免費試用