簡體   English   中英

如何使用openssl使用ocsp驗證證書

[英]How to verify certificate with ocsp using openssl

我有個問題。 我使用openssl來驗證我的證書 - x509_verify_cert()。 但是這個函數不使用ocsp。 因此,如果沒有crl,這可能是一個問題。 在openssl錯誤中,我發現這個定義 - x509_err_ocsp_verify_needed,但我不明白它是如何使用的。 似乎可能存在某種回調,我連接到ocsp服務器函數或類似的東西。 另外我發現它可以使用,據我所知,我自己的驗證功能,但我只想ocsp檢查。

所以我的問題是:是否有可能要求openssl使用ocsp進行驗證以及如何進行驗證?

有可能的 :

openssl ocsp -issuer certchain.pem -cert cert.pem -text -url <the ocsp responder URL>

一些鏈接到文章更詳細:

https://raymii.org/s/articles/OpenSSL_Manually_Verify_a_certificate_against_an_OCSP.html

https://akshayranganath.github.io/OCSP-Validation-With-Openssl/

OpenSSL API不提供單個API來執行OCSP驗證。 OpenSSL API提供原語,以便您可以實現自己的驗證。 您需要填寫實施細節,這可能取決於您嘗試解決的情況。

我建議您了解openssl ocsp命令作為您理解的基礎。 閱讀Sanjeev的答案中的鏈接,可以為您提供使用此命令的示例。

要實施OCSP驗證,您需要:

  1. 從某處提取服務器和頒發者證書(最有可能是SSL連接)
  2. 從服務器證書中提取OCSP服務器列表
  3. 使用服務器和頒發者證書生成OCSP請求
  4. 將請求發送到OCSP服務器並獲得響應
  5. (可選)驗證響應
  6. 提取證書狀態

(可選)您還可以使用響應更新日期范圍緩存結果,以便在再次看到證書時可以快速執行上述過程。

您還可以將一堆服務器證書分組到同一個OCSP服務器中。

值得注意的是,OCSP服務器鏈接可能不是HTTP,您可能需要支持證書可能具有的任何鏈接類型。 例如,在Windows AD企業設置中,服務器OCSP可能只有LDAP OCSP服務器鏈接。

您可能還希望看到我對問題的回答 ,其中我將介紹OCSP請求和響應處理的代碼示例。

更新:

如果要檢查整個鏈,則必須一次執行上述一個證書(盡管證書操作可以重疊)。 據我所知,沒有辦法立刻檢查整個鏈條。 此外,您可能會發現許多中間證書無論如何都不提供OCSP鏈接,因此無法檢查。 如果您需要這樣做,那么緩存結果將是一個好主意,因為您將始終遇到相同的中間證書。 實際上,您可以提前安排為您所遇到的“已知”中間證書執行此操作。

你還指着“ x509_verify_cert ”檢查我引用:

應用程序很少直接調用此函數,但OpenSSL內部使用它來進行證書驗證,包括S / MIME和SSL / TLS代碼。

所以你不應該自己打電話給自己。

似乎可能存在某種回調,我連接到ocsp服務器函數或類似的東西。

在openssl錯誤中,我發現了這個定義--x509_err_ocsp_verify_needed

X509_V_ERR_OCSP_VERIFY_NEEDED已定義,並且從未在openssl代碼庫中使用。 它意味着從用戶提供的驗證回調函數(即X509_STORE_CTX_set_verify_cb)返回,以指示驗證應該因該錯誤而失敗。 您對該信息的處理取決於您自己。 如果您提供回調並從openssl SSL連接返回該錯誤,則SSL連接將終止。

另外值得注意的是,如果您確實添加了執行完整OCSP檢查的自定義驗證回調,則會大大減慢SSL連接設置的速度。 這就是為什么大多數瀏覽器默認不這樣做的原因,因為它會降低用戶體驗的速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM