OCSP 如何處理已刪除的證書?
我們在 Windows Server 2019 上執行 Microsoft 證書頒發機構。我們通過 MDM 向 Android 設備頒發證書。Android 設備使用者使用需要客戶端證書的 Chrome Web 瀏覽器(在 Android 上)瀏覽到 Web 應用程序(由 Apache 託管,在 PHP 8 中實現)。
我們正在安裝一個具有 Microsoft OCSP 響應者角色的單獨 Windows Server 2019 實例,以驗證/驗證送出給 Apache Web 伺服器的客戶端證書是否有效。Apache 有幾個指令來處理 OCSP 驗證。我們還想在 PHP 中驗證證書以提高安全性。
根據我閱讀多個 RFC 和 Microsoft 技術文件的研究,Microsoft OCSP Responder 似乎通過引用 CRL 來驗證證書的吊銷狀態。
如果證書已從 CA 中刪除而不是吊銷,Microsoft OCSP 響應程序如何驗證證書?如果已刪除且未撤銷,它們將不會顯示在 CRL 中。
我在這裡錯過了什麼嗎?Microsoft OCSP 響應程序是否會根據 CA 數據庫驗證序列號及其吊銷狀態?
Microsoft OCSP 響應程序是否會根據 CA 數據庫驗證序列號及其吊銷狀態?
預設情況下,Microsoft OCSP 會將此類序列號報告為“Good”。從 Windows Server 2008 R2 開始,確定性 OCSP 響應功能被添加到 Microsoft OCSP。簡而言之,CA 發布所有已頒發證書的序列號,並且 OCSP 也被配置為查看此目錄。新行為執行以下操作:
- 如果文件夾中不存在序列號,則 OCSP 以
UNKNOWN
狀態響應。這意味著請求的序列號從未由 CA 頒發- 如果文件夾中存在序列號,則檢查 CRL
- 如果序列號列在 CRL 中,則以
REVOKED
狀態響應,GOOD
否則以其他方式響應。有關 Microsoft KB的更多詳細資訊:線上響應程序服務不會為 CRL 中未包含的所有證書返回確定性 GOOD
KB 包含一個腳本,它將所有已頒發證書的序列號轉儲到配置的文件夾中。不過劇本有點瑕疵。它僅導出腳本執行時存在於 CA 數據庫中的序列。維護 CA 數據庫並刪除舊條目以防止 CA 數據庫過度增長。這將導致已刪除證書的誤報
UNKNOWN
狀態,儘管證書已頒發並存在於野外某處。我更喜歡保留所有發布的內容,而不管 CA 維護如何,GOOD
即使證書已從 CA 中刪除,我也會做出響應。為了解決這個缺陷,我建議從腳本中刪除這些行:dir | foreach { remove-item $_ -force }
這將在腳本執行之間保留 CA 上不再存在的序列號。